gpt4 book ai didi

c - SDL_net没有收到UDP数据包

转载 作者:行者123 更新时间:2023-11-30 17:01:47 26 4
gpt4 key购买 nike

我正在尝试与我的 esp8266 进行通信,正如您所看到的,我每 2 秒成功地收到一个来自它的数据包:

wireshark screenshot

wireshark

但我的 SDL_net 应用程序似乎没有收到任何数据(最后的 if 始终为 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,一切开始运转

关于c - SDL_net没有收到UDP数据包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36818590/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com