我正在尝试与我的esp8266通信,正如您所看到的,我每2秒成功收到一个数据包:
但似乎我的SDL_net应用程序中没有收到任何数据(如果最后的if总是假的话):
#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);
}
当我从localhost发送数据包时,它工作,所以我试图关闭我的防火墙,但它仍然无法正常工作。谢谢你的帮助。
编辑: 所以,我尝试使用boost :: asio编写类似的东西。两个程序(SDL_net和boost :: asio)都接收来自localhost的数据包,但是没有一个程序可以从不同的设备接收任何内容(我尝试了我的发送程序,它可以通过localhost在另一台PC上运行,但仍然没有成功)。所以我猜我的Ubuntu有问题。关于我应该怎么做的任何建议?
答案 0 :(得分:0)
好吧,我想我终于找到了问题,我试图为数据包分配太多空间。我不知道为什么它甚至重要,但是当我在SDLNet_AllocPacket(2048)中更改了数字时;到32,一切都开始工作了