当前位置:  技术问答>linux和unix

TCP服务端程序意外重启后,客户端连接不上的问题求解

    来源: 互联网  发布时间:2016-07-03

    本文导语:  请教各位:运行在嵌入式linux环境下程序监听一个端口,等待客户端的连接请求,我试过当程序使用ctrl+c人为停止后,再立即用./xx运行起来,客户端就再也连接不上了。只有再次使用ctrl+c停止程序,等一会再重启程序...

请教各位:运行在嵌入式linux环境下程序监听一个端口,等待客户端的连接请求,我试过当程序使用ctrl+c人为停止后,再立即用./xx运行起来,客户端就再也连接不上了。只有再次使用ctrl+c停止程序,等一会再重启程序,方能连接成功。
客户端的连接失败提示是:The socket is marked as nonblocking, and the requested operation would block, and cannot be completed immediately
请问这是为什么呢?在我的程序中应该加入什么处理才能再程序意外停止后马上重启也能接受连接请求。

|


学习了,另外
ctrl+c
的消息可以通过sigaction (SIGPIPE,........)
来处理

|
应该是因为TIME_WAITING的原因,导致服务器端端口绑定失败。解决方法:
1. 服务器端岩石启动,或者绑定失败后延时重试
2. 采用楼上的方法,设定端口复用. 不过这样的话似乎有和别的服务冲突的可能
3. 正如楼上所说,服务端应该设定信号处理函数,在终止时尽量关闭socket


|


你可以搜搜TIME_WAIT,Tcp/ip详解-卷1里有讲的。好像主要是针对可能的延时包而定的一种规则。

|
有一个叫MSL(好像是叫最大分节生命期)的东西,一般TIME_WAIT状态会保持2个MSL的时长。

|
我也遇到过,就像你说的那样,ctrl+c后,里面重启程序,socket提示bind error之类的,必须过一会儿在从来就可以连上了,这也是一种学习的机会,哈哈,支持楼主,我也去试试!!!!

|
通常服务器端编程为了保证及时响应,都会有端口复用,可以很好避免端口释放后的延迟!

http://topic.csdn.net/u/20090103/16/a0414edb-b289-4c72-84da-39e155e8f4be.html

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 大侠,求助!!LINUX下TCP套接字编程中客户端出现段错误
  • 使用tcp协议发送数据, 如果获得系统底层将包发到客户端之间的耗时?
  • TCP 服务器端关闭客户端句柄问题
  • tcp/ip 服务端响应linux客户端问题
  • 求救:基于TCP的服务/客户端程序
  • TCP:客户端连接服务器出错
  • tcp连接中服务器如何知道客户端退出
  • 在linux下面,为什么TCP服务器端在客户端没有断开前推出程序会关不掉socket?
  • java/j2ee iis7站长之家
  • 请问tcp 客户服务器模型(C/S模型)客户端两个send如果发送间隔太短,服务器端为什么会认为受到的只是一个包
  • linux下socket tcp客户端读取数据
  • 哪位给看一下 为什么连接失败 errno=111 connect 调用失败(这是客户端已tcp方式连接)
  • 请教做过将linux移植到arm9上的大虾,在pc的linux下成功的tcp客户端代码交叉编译后,通过网线下到目标板就无法连接到pc上的服务器端了。
  • tcp socket客户端和服务端示例分享
  • vc++实现的tcp socket客户端和服务端示例
  • 嵌入式linux下,TCP的客户端无法连接到服务器(硬件没问题),请帮忙看看!谢谢
  • 使用TCP,在客户端怎么知道建立好的连接已经断开?怎么用非阻塞模式,以及怎么知道socket已经收到数据并立即将数据读出?
  • 对socket使用select(max_fd,&rd_set,&wr_set,&er_set,&timeout);当服务端断开TCP连接,客户端就会崩溃。怎么解决?谢谢
  • 一个TCP文件传输程序,客户端老连不上,大家帮我看看哪错了
  • Android TCP 文件客户端与服务器DEMO介绍
  • java命名空间java.net接口socketoptions的类成员方法: tcp_nodelay定义及介绍
  • http走的是tcp还是udp?ssh是tcp还是udp?
  • Linux内核中影响tcp三次握手的一些协议配置
  • 100分求《嵌入式系统Web服务器—TCP/IP Lean》或《TCP/IP Lean Web Servers for Embedded Systems 》
  • TCP协议报头字段详解及报头图
  • tcp和udp套接字有何不同?在什么情况下用tcp什么情况下用udp????
  • 对TCP协议状态及状态转换理解
  • 请问怎么知道每个TCP连接所属哪个进程??还有怎么样断开系统中任意一个TCP连接?
  • TCP协议四次断连过程介绍及Linux内核协议栈中相关设置项
  • 求助!!!linux tcp发送 xp tcp接收 出现的问题
  • TCP协议三次握手过程详解


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3