当前位置:  技术问答>linux和unix

关于网络通信中recvfrom和sendto的用法

    来源: 互联网  发布时间:2017-01-04

    本文导语:  我在服务器里广播一条系统信息(buf3),然后接受客户端发来的信息(buf4),再转发给所有的客户;在客户端里接受服务器发来的信息并显示,发送信息给客户端。用UDP来实现。 服务器里:              sendto(sockfd,...

我在服务器里广播一条系统信息(buf3),然后接受客户端发来的信息(buf4),再转发给所有的客户;在客户端里接受服务器发来的信息并显示,发送信息给客户端。用UDP来实现。
服务器里:
             sendto(sockfd,buf3,sizeof(buf3),0,NULL,NULL);
             printf("recv111111111n");
             recvfrom(sockfd,buf4,MAXLINE,0,NULL,NULL); 
          //   printf("recv333333n");
             sendto(sockfd,buf4,sizeof(buf4),0,NULL,NULL);
客户端里:
             recvfrom(sockfd,buf2,MAXLINE,0,NULL,NULL);
             printf("recv from server:%sn",buf2);
             sendto(sockfd,buf,sizeof(buf),0,(SA *)&servaddr,sizeof(servaddr));

问题:
        recvfrom函数后两个参数应该为&peeraddr和&peerlen,用以保存接受到的数据的来源地址和地址大小,如果在客户端,设置为NULL,意为不保存服务器的地址,但是在服务器端也设置为NULL也可以吗?“ printf("recv111111111n");”这句输出,但是那句注释掉的 “printf("recv333333n");”没有输出,循环也卡在这里。
求教~

|
recvfrom默认是阻塞的,你可以把它设成非阻塞的,试试。设置方法见:http://topic.csdn.net/u/20110922/23/efea0a48-88e6-4f91-bdbc-7c7cad7e25c2.html

另外我有一个疑问,你的sendto的最后两个参数怎么是NULL的,不应该是目的IP吗?能解释一下吗?

|
你的sendto失败了吧 ,你把要传送的网络地址设置为null了

|

这样是不行的,如果你想把数据发到整个网络,可以把目的IP设为组播地址(224开头的地址)。
我知道你为什么没有打印了,因为你的发送失败,所以你的客户端recvfrom接收不到数据,因此而阻塞。程序运行不到printf那一句。。。。。。。。

    
 
 

您可能感兴趣的文章:

 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 网络通信编程的困惑
  • 开源网络通信加密协议 Tcpcrypt
  • Linux下的网络通信架构 cwinux
  • 请教网络通信高手~~~~
  • 轻量级网络通信框架 nSocket
  • linux和WINDOWS程序之间的网络通信是不是特别慢?
  • linux网络通信的问题
  • 【不看后悔】UNIX网络通信一大疑难问题
  • linux下网络通信使用接受函数recv()问题?
  • 网络通信SIGPIPE信号问题
  • 高分求助:内核模块编程中如何实现网络通信
  • 嵌入式 linux开发中,加入网络通信代码后,ARM9启动后在超级终端打印出错误信息,请帮忙解决!谢谢
  • Linux网络编程(怎样实现两个客户端之间的通信)
  • 我写了个linux下的网络程序,程序在多个电脑间通信,但是我没有多个电脑,怎么调试这样的程序啊?
  • 我要做一个网络通信的程序,会涉及到从几个连接接收数据,然后整合
  • 关于网络编程客户端与服务器通信的问题
  • linux下socket网络通信 得不到客户端IP地址
  • Socket通信中怎样探测对方网络已经出错?
  • 基于java TCP网络通信的实例详解
  • android 网络编程之网络通信几种方式实例分享


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3