返回信息流rt
谢谢
这是一条镜像帖。来源:北邮人论坛 / soft-design / #30138同步于 2008/9/23
该镜像源已超过 30 天没有更新,可能在源站已被删除。
SoftDesign机器人发帖
请问:linux下socket编程,为什么要用listen函数,udp的socket
kyg614
2008/9/23镜像同步11 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
linux和udp= =
这2个怎么对比的??
【 在 kyg614 (ainiyongbubianjiushiyouzhima) 的大作中提到: 】
: rt
: 谢谢
同样没听明白
【 在 DarkIce (10.19 Linkin Park|等待上车) 的大作中提到: 】
: linux和udp= =
: 这2个怎么对比的??
姑且是认为这样吧 但是这是与操作系统无关的
【 在 dc042680 (by myself) 的大作中提到: 】
: LZ的意思是面向连接的socket和无连接的socket的区别吧?
我是想问,tcp socket创建完了之后,为什么要把listen函数单独出来,而不是在创建的时候直接指定其属性呢?
在udp的socket里面,没有用到listen
这又是为什么?
欢迎讨论!
随便粘一个::
建立一个TCP连接需要三次握手,而断开一个TCP则需要四个分节。当某个应用进程调用close(主动端)后(可以是服务器端,也可以是客户
端),这一端的TCP发送一个FIN,表示数据发送完毕;另一端(被动端)发送一个确认,当被动端待处理的应用进程都处理完毕后,发送一个FIN到主动
端,并关闭套接口,主动端接收到这个FIN后再发送一个确认,到此为止这个TCP连接被断开。
2、UDP套接口
UDP套接口是无
连接的、不可靠的数据报协议;既然他不可靠为什么还要用呢?其一:当应用程序使用广播或多播是只能使用UDP协议;其二:由于
他是无连接的,所以速度快。因为UDP套接口是无连接的,如果一方的数据报丢失,那另一方将无限等待,解决办法是设置一个超时。
在编写UDP套接口程序时,有几点要注意:建立套接口时socket函数的第二个参数应该是SOCK_DGrAM,说明是建立一个UDP套接 口;由于UDP是无连接的,所以服务器端并不需要listen或accept函数;当UDP套接口调用connect函数时,内核只记录连接放的IP地址 和端口,并立即返回给调用进程,正因为这个特性,UDP服务器程序中并不使用fock函数,用单进程就能完成所有客户的请求。
原文:http://linux.chinaunix.net/techdoc/develop/2008/07/22/1019960.shtml
【 在 kyg614 (ainiyongbubianjiushiyouzhima) 的大作中提到: 】
: 我是想问,tcp socket创建完了之后,为什么要把listen函数单独出来,而不是在创建的时候直接指定其属性呢?
: 在udp的socket里面,没有用到listen
: 这又是为什么?
: ...................
请别2.。。
【 在 kyg614 (ainiyongbubianjiushiyouzhima) 的大作中提到: 】
: 我是想问,tcp socket创建完了之后,为什么要把listen函数单独出来,而不是在创建的时候直接指定其属性呢?
: 在udp的socket里面,没有用到listen
: 这又是为什么?
: ...................
简单码点字 关于socket
首先要明白socket是通用套接字 通用两个字意味的是它可以支持各种协议 当前用的最多的是 TCP UDP IGMP ICMP
人们完全可以自己开发一个类似tcp或udp的协议 在实现的时候只要按照socket的标准去实现 你也可以用socket在自己
的协议上通信
socket对应不同的协议有不同的type 在创建的时候需要指定 sock_stream sock_dgram sock_raw 分别对应tcp ,udp ,
ICMP IGMP 原始IP
在创建了以后socket会以一个int s的形式做为一个描述符存放在内存中 同时根据不同的type和family(协议体系)会具有不同
的ops(操作,例如connect bind listen) 不同的ops会分别关联到具体的实现 例如一个steam的socket tmp.bind-->connection_sock.bind
创建好了socket下面的操作就会因为tcp 和udp的不同而有区别
tcp的过程是 绑定端口bind 服务端侦听listen 发送端连接connect 服务端接受accept 发送 接收
udp的过程简单 发送端直接发送 服务端不停接收
还用继续说啥?
【 在 kyg614 (ainiyongbubianjiushiyouzhima) 的大作中提到: 】
: 我是想问,tcp socket创建完了之后,为什么要把listen函数单独出来,而不是在创建的时候直接指定其属性呢?
: 在udp的socket里面,没有用到listen
: 这又是为什么?
: ...................