GCDAsyncSocket

详见github中GCDAsyncSocket对socket的介绍


原文地址

最近在写udp程序的时候,对udp是否有必要bind存在了一定的疑惑,针对这个问题在网上查找了一些相关文章,并自己也写了部分代码进行验证。下面写出了自己的一点认识和感受。

众所周知,udp不是stream的,实际上没有什么标定的服务端和客户端之类的(习惯上认为接收数据的一端为服务端,发送数据的一端为客户端),那么bind还有意义吗?我个人认为主要看你是怎么用的,bind主要是指定创建的socket的有效范围,即这个socket涉及的有效ip地址和端口号,我们在创建socket后,往往要先设定插口的参数,比如缓存区大小,还有就是有效的ip地址,端口号等,使用bind就是使得这些设置生效。比如:

对于发送数据端,如果不用bind,则无固定端口发送,系统会自动选取一个端口(范围在1024--5000之间)发送数据。如果使用bind,就是用指定的端口发送数据。实际上,发送端一般只需要在sendto函数中指定对端ip地址和端口即可,至于本地是使用哪个端口发送应该无所谓,所以发送数据一般不需要bind。

对于接收数据端,一般在实际应用中都会指定接收XX端口的数据,所以接收数据一般使用bind

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1.这篇文章不是本人原创的,只是个人为了对这部分知识做一个整理和系统的输出而编辑成的,在此郑重地向本文所引用文章的...
    SOMCENT阅读 13,167评论 6 174
  • 个人认为,Goodboy1881先生的TCP /IP 协议详解学习博客系列博客是一部非常精彩的学习笔记,这虽然只是...
    贰零壹柒_fc10阅读 5,115评论 0 8
  • 11.1 引言 UDP是一个简单的面向数据报的运输层协议:进程的每个输出操作都正好产生一个UDP数据报,并组装成一...
    张芳涛阅读 2,892评论 1 6
  • 名词延伸 通俗的说,域名就相当于一个家庭的门牌号码,别人通过这个号码可以很容易的找到你。如果把IP地址比作一间房子...
    杨大虾阅读 20,662评论 2 56
  • 我们听着童话故事,口中含着甜甜的糖果,牵着父母的手蹦蹦跳跳的成长,童话故事里王子和公主是会相遇的,王子最终会战...
    饭筒不饭桶阅读 1,651评论 0 0