博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
socket TCP编程中connect的一些坑
阅读量:4190 次
发布时间:2019-05-26

本文共 808 字,大约阅读时间需要 2 分钟。

1.服务端listen成功后,系统就自动接收客户端请求了

man listen:

其中有一段

The  behavior of the backlog argument on TCP sockets changed with Linux

       2.2.  Now it specifies the  queue  length  for  completely  established
       sockets  waiting  to  be  accepted, instead of the number of incomplete
       connection requests.  The maximum length of the  queue  for  incomplete
       sockets  can be set using /proc/sys/net/ipv4/tcp_max_syn_backlog.  When
       syncookies are enabled there is no logical maximum length and this set‐
       ting is ignored.  See tcp(7) for more information.

也就是说,listen成功后,系统会自动接受bocklog个客户端请求,并不需要服务端accept,就算服务端没有accept,客户端connect仍然返回成功。accept仅仅是从backlog队列中取出一个已经建立了完整TCP连接的套接字。

2.一个fd   socket了connect后,不能再次connect

再次connect,会报错:Transport endpoint is already connected

此时想要再次connect,必须重置fd..

连接建立后socket的状态被置为SS_ISCONNECTED,因此在调用close重置此socket状态之前,会报错。。

你可能感兴趣的文章
FleaPHP 开发指南 - 3. 应用程序入口
查看>>
FleaPHP 开发指南 - 1. 开始前的准备工作
查看>>
实际采用 FleaPHP 的网站
查看>>
经常问到的问题 (FAQ)
查看>>
关于 FleaPHP
查看>>
Web MVC框架-命令及页面跳转
查看>>
Web MVC框架-视图模板查找及组织
查看>>
美丽的错误
查看>>
MVC框架视图及页面跳转分析-模板技术
查看>>
EasyJWeb+JPA(Hibernate3.2)+Spring2构架缓存技术
查看>>
EasyJF与Cownew携手打造BlueFin
查看>>
EasyJF开源团队欢迎您的加入
查看>>
人性化的验证(Validate)系统
查看>>
超级IOC容器SuperContainer
查看>>
用尽量少的代码,做尽量多的事情
查看>>
EasyJWeb-1.0 m1版正式发布
查看>>
[挑战MVC极限]EasyJWeb-1.0特性抢先看之一简介
查看>>
在easyjweb应用中关于acegi安全配置的增强
查看>>
使用权限标签控制View层展示的内容
查看>>
5月26开源沙龙活动小记
查看>>