[英]SDL_net doesn't receive UDP packets
我正在嘗試與esp8266通信,如您所見,我每2秒成功收到一個數據包:
但似乎我在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.