社区
网络编程 帖子详情 ???一个Tcp连接建立后能保持的活动时间是多久?默认是两个小时吗? poweruser 2002-12-13 10:16:23 我在做一个C/S结构的程序(使用重叠IO模型),我想在双方的socket建立TCP连接后把,这个socket保存起来,等下次发送数据的时候就不用再次进行连接了,省去了建立连接的时间。但这个socket保持活动的时间是多少呢,我看Tcp/IP详解中说的好像是2个小时。2个小时的时间太短了,不知道通过修改socket参数来改变这个活动时间对系统有没有副作用。
还有个问题socket函数中有没有可以获取这个socket是否有效的函数?如果发现这个socket已经无效了我就创建一个新的socket进行通讯。
不知道我的想法是否正确,请大家给点建议,谢谢!
...全文
3357 20 打赏 收藏 ???一个Tcp连接建立后能保持的活动时间是多久?默认是两个小时吗? 我在做一个C/S结构的程序(使用重叠IO模型),我想在双方的socket建立TCP连接后把,这个socket保存起来,等下次发送数据的时候就不用再次进行连接了,省去了建立连接的时间。但这个socket保持活动的时间是多少呢,我看Tcp/IP详解中说的好像是2个小时。2个小时的时间太短了,不知道通过修改socket参数来改变这个活动时间对系统有没有副作用。 还有个问题socket函数中有没有可以获取这个socket是否有效的函数?如果发现这个socket已经无效了我就创建一个新的socket进行通 复制链接
扫一扫 分享 转发到动态 举报 AI 作业
写回复 配置赞助广告取 消
确 定
用AI写文章 20 条回复 切换为时间正序 请发表友善的回复… 发表回复 打赏红包 需支付: 0.00 元 取 消 确 定 DouDouBug 2002-12-13 打赏举报 回复 1 那时间是多少,2小时抑或20,30秒 realdreamer 2002-12-13 打赏举报 回复 代价问题!
1.愿意想办法保活 2 小时, 或以上
2.还是愿意断开后, 需要时再次连接
你选哪个? 显然, 第一个代价太大! 没有效果的保活 2 小时以上, SOCKET 是会占用系统资源的.
我也想不出有什么应用需要保活 2 小时以上, 没动静, 又不能断开. zhenxizhou 2002-12-13 打赏举报 回复 应该没两小时,我好象记得大概是20秒还是30秒。 门吹西风 2002-12-13 打赏举报 回复 2h还少啊?不可能有这么长的时间的,如果在2H内一直没有数据通过,这不是资源浪费吗?而且,如果在2H中如果物理线路断了怎么办,你再发送数据不是要出问题吗?如果你想开始建立后一直让SOCKET保持ACTIVE,最好是自己每隔一定的时间双方交换一个检测报文,只要有1个字节就够了,或者一方每隔一定的时间向对方发送一个检测报文,有对方来检查它前后两次收到该报文的时间间隔,如果在规定的间隔内没有收到对方发的检测报文,就认为线路不通了,那么就可以关闭自己了. poweruser 2002-12-13 打赏举报 回复 呵呵,多谢了
各位还有什么建议?
周末愉快,周一结帐! yanhuahui 2002-12-13 打赏举报 回复 既然一直保持连接那我如果把连接用的socket保存起来,如果连接很多的话系统是否会负担过重?
这个我不知道 poweruser 2002-12-13 打赏举报 回复 哦?我去看看先
既然一直保持连接那我如果把连接用的socket保存起来,如果连接很多的话系统是否会负担过重? yanhuahui 2002-12-13 打赏举报 回复 ftp://ftp.isi.edu/in-notes/rfc1122.txt
找到4.2.3.6小节看看 yanhuahui 2002-12-13 打赏举报 回复 呵呵,我看了Windows网络编程技术,第九章讲套结字选项 以及rfc1122的
4.2.3.6小节,你理解错它的意思,你建立的socket如果没有异常的出现错误,则
会永远的连接,第九章的SO_KEEPALIVE只是定期的发送(keep alive)数据包,
判断连接是否仍在连接状态,
rfc:ftp://ftp.isi.edu/in-notes/rfc1122.txt fastbit 2002-12-13 打赏举报 回复 up dansu 2002-12-13 打赏举报 回复 不同的操作系统有不同的默认值,他是由tcp协议本身规定的保活,win2000是在注册里面要加一个表项来改,unix是默认的两个小时,也可以更改。我都做过测试,你找一下相关资料。很简单。 poweruser 2002-12-13 打赏举报 回复 yanhuahui(眼发黑)
Sorry,不是TcpIp详解,是Windows网络编程技术,第九章讲套结字选项时讲的,连接建立后的活动期限是2个小时。
sjzxyg(小小鸟)
如果很频繁的发送接收的话,这样连接时会有一点延时,我想把socket相关的功能封装到一个dll中。
yanhuahui 2002-12-13 打赏举报 回复 up sjzxyg 2002-12-13 打赏举报 回复 没有必要,你这样做服务器的负担更重,随用随连即可 yanhuahui 2002-12-13 打赏举报 回复 各位兄弟,我一直以为至少有两小时,也急于知道到底有多长,如果断开的话,是
因为什么原因断开,Tcp/IP详解我是没见到过,如果各位兄弟找到这方面的书籍的
话,通知我一声,谢谢 yongdu 2002-12-13 打赏举报 回复 tcp能保持两小时吗?怀疑 yanhuahui 2002-12-13 打赏举报 回复 系统的TcpIp堆栈能否承担?呵呵,这一点我倒没考虑过,不知各位兄弟知道哪里有这方面的文档?学习... yanhuahui 2002-12-13 打赏举报 回复 zhenxizhou(追忆) ,呵呵,你更夸张,你以为是http? yanhuahui 2002-12-13 打赏举报 回复 请问楼主:Tcp/IP详解第几章讲到只能保持2小时? poweruser 2002-12-13 打赏举报 回复 客户端和服务器端可能有频繁的数据传送,而且可能有很多的客户端(可能超过500个)。
我开始是这样想的,在server端保存一个列表,把当前已经建立连接的socket保存起来,等发送数据的时候选择相应的socket进行发送数据,如果发现这个socket已经无效了(查了一下好像可以使用getsocketopt来获取状态)那就new一个新的socket,用这个socket来发送数据。
但是刚才想了一下,发现如果server端跟每个客户端都联系了,那就要保存可能超过500个的连接,我自己程序中的链表倒无所谓了,但是不知道系统的TcpIp堆栈能否承担,好像这样保存的话对会给系统造成很大的负担。
各位有没有什么好的解决方法??? 最多能创建多少个 TCP 连接? 最多能创建多少个 TCP 连接?最多能创建多少个 TCP 连接?端口号资源文件描述符资源线程资源内存资源CPU资源总结
最多能创建多少个 TCP 连接?
首先,要清楚,创建一个TCP连接需要有一个四元组(源IP,源端口,目标IP,目标端口),其中,源IP,源端口会由操作系统自行分配【端口号是有限的0 ~ 65535】,我们在创建的时候,只需要指定目标IP和目标端口号。
当一个TCP连接创建成功后,操作系统需要为每个TCP连接本身以及这个连接所用到的缓冲区,分配一定的内存,然后返回一个文件描述符【Linux 一个 TCP 连接可以对应几个 HTTP 请求? 1 如果tcp连接保持长连接,Connection:keep-alive && http(s) 1.1 只要在tcp连接(默认两小时)不断开,可以一直串行发送数量无上限;
2 如果tcp连接不保持长连接,Connection:close 只能发一次请求;
3 如果http2 ,采用多路复用技术Multiplexing,一个tcp可以并发多个http请求,同样也是无上限;
4 如果和服务器建立多个tcp连接(chrome 浏览器一个host默认tcp连接并发数6,这个限制是有原因的,Ip TCP连接后保持连接 TCP连接当网络通信时采用TCP协议时,在真正的读写操作之前,server与client之间必须建立一个连接,当读写操作完成后,双方不再需要这个连接时它们可以释放这个连接,连接的建立是需要三次握手的,而释放则需要4次握手,所以说每个连接的建立都是需要资源消耗和时间消耗的TCP保活的必要性:TCP的长连接理论上只要连接建立后,就会一直保持着。但有时有一些防火墙之类的软件会自动检查主机的网络连接状况,比 SOCKET编程之一个端口如何建立多个TCP连接?(用fork子进程、select、poll、epoll都是可以的)一个端口最大支持建立多少个tcp连接? 文章目录文章1:不太清楚socket一个端口如何建立多个tcp连接,这边转载一篇文章文章2:一台Linux服务器最多能支撑多少个TCP连接?结论:socket服务端只用开一个端口监听(listen)socket请求就行,理论上来说,最大能支持2的32次方(ip数)×2的16次方(port数)个连接,但是linux对打开文件数有限制(65536个,每个socket连接占用一个文件),如果想支持更多,需要修改系统级/用户级/进程级文章3:为什么服务端需要产生两个socket(listen_socket_fd和c TCP长连接和HTTP长连接 一、TCP 长连接 (Keep Alive)
TCP 长连接是一种保持 TCP 连接的机制。当一个 TCP 连接建立之后,启用 TCP Keep Alive 的一端便会启动一个计时器,当这个计时器到达 0 之后,一个 TCP 探测包便会被发出。这个 TCP 探测包是一个纯 ACK 包,但是其 Seq 与上一个包是重复的。
打个比喻,TCP Keep Alive 是这样的:
TCP 连接两端好比两个人,这两个人之间保持通信往来(建立 TCP 连接)。如果他俩经常通信(经常发送 TCP 数据),那这个 TCP
网络编程
18,363
社区成员
64,187
社区内容
发帖 与我相关 我的任务 网络编程 VC/MFC 网络编程 复制链接
扫一扫 分享 确定 社区描述 VC/MFC 网络编程 c++c语言开发语言 技术论坛(原bbs) 社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告 试试用AI创作助手写篇文章吧
+ 用AI写文章