if ((sockfd = createUdpSocket (&sockfd,
&server_sockaddr,
atoi (*(argv + 1)))
) < 0);
Упс, откуда взялась эта точка с запятой?У вас есть убежище!
Кроме того, эта строка не будет делать то, что вы ожидаете:
if (!bind (*sockfd, (struct sockaddr*) &client_sockaddr, sizeof (sockfd)))
Функция bind()
возвращает 0 в случае успеха, -1 в случаеотказ.Ваш тест выполнен в обратном направлении и выдаст ошибку, когда связывание будет успешным, а не неудачным.Он также получил неправильный &
, где вы говорите &client_sockaddr
.И третий аргумент должен быть размером структуры sockaddr_in
, а не sizeof(sockfd)
.Попробуйте:
if (bind (*sockfd, (struct sockaddr*) client_sockaddr, sizeof (struct sockaddr_in)) != 0)
И, черт возьми, пока мы здесь, в вашей распечатке об использовании отсутствует аргумент argv[0]
:
fprintf (stderr, "Usage: %s <port>\n");