关于winsocket下的TCP链接

jinright 2008-11-27 12:42:21
服务器端与客户端之间建立一个TCP的SOCKET链接,服务器端向客户端发送数据(网络超时设为10秒,阻塞模式),如果客户端的网线被拔掉,那么服务器端的程序会阻塞掉吗?
...全文
121 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
civanx 2009-03-12
  • 打赏
  • 举报
回复
客户端网线被拔掉,服务端SOCKET会出错返回。C++开源FTP服务器及客户端源代码(FileZilla)


speme 2009-03-10
  • 打赏
  • 举报
回复
看你是不是用线程实现发送数据的。
这类IO操作建议使用线程。
race condition 2009-03-08
  • 打赏
  • 举报
回复
我个人理解哈
这里面涉及到两个定时器,
一个是我们可以自己设置(在应用程序中设置,编程时也可以设置)的tcp连接超时定时器。就是当客户端和服务器建立起来连接后,如果服务器在固定时间内没有收到客户端发送过来的数据,那么连接中断。
另一个定时器是TCP的超时重传定时器,这个定时器应该属于协议本身的,在应用程序中不能设置。用在数据传输过程中。就是服务器每发送一份数据,客户端都要对接收到的这个数据进行确认(发送ACK报文),如果服务器在发送完一份数据后,在固定时间能(超时重传时间)没有接收到确认报文,那么他会重传。

对于楼主的问题:
如果在传输数据的过程中,客户端掉线了,那么在tcp连接超时时间内(上面说的第一个定时器),服务器会每隔一个超时重传时间(第二关定时器)发送一份数据,直到第一个定时器超时了,连接中断了,数据就停止发送了。

在服务器不停的发送数据的过程中,服务器端应该不会阻塞啊。楼主说的这个阻塞是什么意思,我不太理解啊。Tcp里面有阻塞这个状态吗?我对tcp理解的不够深入,在这里也学习一下哈。

我在是按照TCP协议本身理解的,楼住是不是涉及到编程了?
better0332 2009-01-23
  • 打赏
  • 举报
回复
楼上正解
tonywangm 2009-01-22
  • 打赏
  • 举报
回复
不会,TCP本身有定时器,到时后回自动关闭连接。
liujiajia_ 2008-11-27
  • 打赏
  • 举报
回复
服务端会一直挂起?
qap22 2008-11-27
  • 打赏
  • 举报
回复
不懂,up

4,392

社区成员

发帖
与我相关
我的任务
社区描述
通信技术相关讨论
社区管理员
  • 网络通信
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧