簡體   English   中英

SDL_net不接收UDP數據包

[英]SDL_net doesn't receive UDP packets

我正在嘗試與esp8266通信,如您所見,我每2秒成功收到一個數據包:

Wireshark屏幕截圖

Wireshark

但似乎我在SDL_net應用程序中未收到任何數據(如果最后一刻始終保持為false):

#include <stdlib.h>
#include <SDL2/SDL.h>
#include <SDL2/SDL_net.h>

int main(int argc, char **argv)
{   
    /* initialize SDL */
    if(SDL_Init(0)==-1)
    {
        printf("SDL_Init: %s\n",SDL_GetError());
        exit(1);
    }

    /* initialize SDL_net */
    if(SDLNet_Init()==-1)
    {
        printf("SDLNet_Init: %s\n",SDLNet_GetError());
        exit(2);
    }
        UDPsocket udpsock;

        udpsock=SDLNet_UDP_Open(6666);
        if(!udpsock) {
            printf("SDLNet_UDP_Open: %s\n", SDLNet_GetError());
            exit(2);
        }

        UDPpacket *packet  = SDLNet_AllocPacket(2048);
        int numrecv;

        while(1)
        {

            if(SDLNet_UDP_Recv(udpsock, packet)) {
                printf("%s",packet->data);
            }
        }

    /* shutdown SDL_net */
    SDLNet_Quit();

    /* shutdown SDL */
    SDL_Quit();

    return(0);
}

當我從本地主機發送數據包時,它可以工作,因此我嘗試關閉防火牆,但仍然無法工作。 謝謝你的幫助。

編輯:所以,我嘗試使用boost :: asio編寫類似的內容。 這兩個程序(SDL_net和boost :: asio)都從本地主機接收數據包,但是它們都無法從其他設備接收任何信息(我嘗試了在其他PC上通過本地主機運行的發送程序,但仍然沒有成功)。 所以我想我的Ubuntu出了點問題。 關於該怎么辦我有什么建議嗎?

好的,我想我終於找到了問題,我試圖為數據包分配太多空間。 我什至不知道為什么這很重要,但是當我更改SDLNet_AllocPacket(2048)中的數字時; 到32歲,一切開始起作用

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM