recvfrom () не получает сообщений UDP - PullRequest
0 голосов
/ 28 ноября 2018

Я пытаюсь получить UDP-сообщения, которые отправляются из разных приложений на моем компьютере.

Я создал сокет и связал его с адресом.Когда я отправляю UDP-сообщения, используя Packet Sender, ничего не приходит.Я попытался отключить брандмауэр, просто чтобы быть уверенным, но ничего не происходит.

Я отправляю сообщения на порт 8034 127.0.0.1.

Я пытался привязать оба к 127.0.0.1 и INADDR_ANY, но ни одна из них не работает.

Это код, который я использую для прослушивания:

SOCKET SendSocket = INVALID_SOCKET;
sockaddr_in RecvAddr, ClientAddr;
WSADATA wsaData;
struct sockaddr_in serv, client;
int l = sizeof(client);
char buffer[256];

int iResult = WSAStartup(MAKEWORD(2, 2), &wsaData);
if (iResult != NO_ERROR) {
    wprintf(L"WSAStartup failed with error: %d\n", iResult);
}

SendSocket = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
if (SendSocket == INVALID_SOCKET) {
    wprintf(L"socket failed with error: %ld\n", WSAGetLastError());
    WSACleanup();
}

ClientAddr.sin_addr.S_un.S_addr = htonl(INADDR_ANY);
ClientAddr.sin_family = AF_INET;
ClientAddr.sin_port = htons(8034);

bind(SendSocket, (struct sockaddr *) &ClientAddr, sizeof(ClientAddr));

bool valid = true;

while( valid )
{
    //cout << "\ngoing to recv\n";
    int rc = recvfrom(SendSocket, buffer, sizeof(buffer), 0, (struct sockaddr *)&client, &l);
    if (rc < 0)
    {
        //cout << "ERROR READING FROM SOCKET";
    }
    else
    {
        cout << "\n the message received is : " << buffer << endl;
    }

    DoPostDrawTask( valid );
}
...