winsock - указан неверный аргумент (при привязке) - PullRequest
0 голосов
/ 13 мая 2018

Эта проблема сводит меня с ума.

Я создаю сокет и устанавливаю SO_REUSEADDR.

thisSocket = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
int i = 1;
setsockopt(thisSocket , SOL_SOCKET, SO_REUSEADDR, (char *)&i, (int)sizeof(i));

Когда я связываю:

sockaddr_in_t sock_addr;
memset(&sock_addr, 0, sizeof(sockaddr_in_t));

sock_addr.sin_family = AF_INET;
sock_addr.sin_port   = htons(_listeningPort);
sock_addr.sin_addr.s_addr = inet_addr("0.0.0.0");

bind(thisSocket, reinterpret_cast<sockaddr_t*>(&sock_addr), sizeof(sock_addr));

Иногда я получаюошибка:

 "An invalid argument was supplied"

Что я здесь не так делаю?И почему я получаю эту ошибку?

UPDATE

Оказывается, что пакеты были отправлены в сокет до вызова bind ().Это привело к тому, что bind () вернул ошибку.

Ответы [ 2 ]

0 голосов
/ 14 мая 2018

Оказывается, пакеты отправлялись в сокет до вызова bind (). Это привело к тому, что bind () вернул ошибку.

0 голосов
/ 13 мая 2018

В документации bind():

WSAEINVAL

Указан неверный аргумент.

Эта ошибкавозвращенный сокет s уже привязан к адресу.

Ошибка означает, что thisSocket уже был успешно вызван bind(), и вы пытаетесьbind() это снова.

...