SDL_net没有收到UDP包
问题描述:
我想用我的esp8266进行沟通,你可以看到,我成功地从它接收数据包每2秒:SDL_net没有收到UDP包
但似乎我没有收到我的SDL_net应用程序的任何数据(如果同时在年底保持始终为假):
#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,一切开始工作
要调试第一步,添加一个else打印任何错误:'if(SDLNet_UDP_Recv(udpsock,packet))printf(“%s”,packet-> data); } else {//打印错误}' – fluter
非常感谢您的回答,我尝试添加printf(“%s”,SDLNet_GetError());在其他地方,但没有发生(没有错误打印)。 – vyzigold