recvfrom возвращая ошибку при попытке прочитать дейтаграммы UDP

Я пытаюсь сделать очень простой UDP-сервер, но не могу понять, как это сделать. Я посмотрел документацию Microsoft, но даже тогда столкнулся с этой проблемой. Кажется, функция recvfrom возвращает ошибку, и вызов WSAGetLastError говорит мне, что это недопустимая ошибка аргумента, но мне кажется, что аргументы верны:

int main( int argc, const char* argv[])
{
char request[MAX_REQUEST_LEN];
int port;
SOCKET sock;
bool quit = false;

port = 11130;

WSADATA wsaData;
int iResult = WSAStartup(MAKEWORD(2,2), &wsaData);
if (iResult != NO_ERROR)
{
cout << "WSAstartup failed" << endl;
return -1;
}

// Create a socket.
sock = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
if (sock == INVALID_SOCKET) {
WSACleanup();
cout << "Error at socket" << endl;
return -1;
}

sockaddr_in server, client;
int c_len = sizeof(client);

server.sin_family = AF_INET;
server.sin_addr.s_addr = htonl(INADDR_ANY);
server.sin_port = htons(port);

bind( sock, (sockaddr *)&server, sizeof(server) );

while(!quit)
{
memset(request,'\0', MAX_REQUEST_LEN);
int result = recvfrom(sock, request, MAX_REQUEST_LEN, 0, (struct sockaddr*) &client, &c_len);
cout << "Received: " << request << endl << "recvfrom return: " << result << endl;
//process request

}

closesocket(sock);
WSACleanup();

return 0;
}

Любая помощь будет оценена.

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]