我的程序无法接收UDP数据包

发布于 2022-07-25 03:52:35 字数 218 浏览 22 评论 5

这个问题困扰了我天了.我的服务器端程序接收UDP数据包.但是客户端发送数据包后.服务端的执行到recvfrom()函数,就没有了反应.我看我的程序没有问题的.
   请各位指点 在线等待谢谢.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

苍白女子 2022-07-27 16:51:18

原帖由 skai 于 2006-10-2 23:26 发表
你也没有打印接受到的数据包啊,recvfrom()返回成功了啊

他在收到数据包的时候打印success了.
如果fail和success都没有打印的话就是前面的问题了,自己仔细查查,这个都是固定模式的,没什么太多的问题,可以在socket之后,setsockopt,设置一个receive的读时间限制,再看看如何。
可以参考一下我的这个代码
http://bbs.chinaunix.net/viewthr ... ighlight=duanjigang

[ 本帖最后由 duanjigang 于 2006-10-6 07:31 编辑 ]

小草泠泠 2022-07-27 16:06:09

你也没有打印接受到的数据包啊,recvfrom()返回成功了啊

寻鱼水之欢 2022-07-27 15:09:35

dgram是什么?
len_inet为什么只初始化一次?(和你第一次收不到数据无关,不过以后会有问题)

山川志 2022-07-27 11:10:42

客户端发送UDP数据包,在 上面的程序中,"recv success" 不能打印.
说明recvfrom();函数没有执行成功.但是也没有输出错误信息.这说明recvfrom();函数就没有执行.为什么呢?

那请放手 2022-07-26 17:13:02

我的服务器端代码:
sockfd = socket(AF_INET, SOCK_DGRAM, 0);
        if(sockfd == -1)
        {
                bail("socket()";
        }
       
        /*建立套接口地址*/
        memset(&adr_inet, 0, sizeof(adr_inet));
        adr_inet.sin_family = AF_INET;
        adr_inet.sin_port = htons(9000);
        adr_inet.sin_addr.s_addr = htonl(INADDR_ANY);
        len_inet = sizeof(adr_inet);
       
        /*将该地址帮定到套接口,以便客户程序联接*/
        bindfd = bind(sockfd,(struct sockaddr *)&adr_inet, len_inet);
        if(bindfd == -1)
                bail("bind()";
       
        /*等待客户请求*/
        for(;
        {
                 recvfd = recvfrom(sockfd, dgram, 100, 0, (struct sockaddr*)&adr_clnt, &len_inet);
                if(recvfd < 0)
                        bail("recvfrom(2)";
                printf("recv success!";
        }

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文