TCP:客户端连接服务器, 断开后再次连接失败,用GetLastError()返回100038错误 [问题点数:20分,结帖人Busichong]

Bbs1
本版专家分:77
结帖率 100%
Bbs1
本版专家分:77
Bbs5
本版专家分:3893
Bbs5
本版专家分:2083
Bbs2
本版专家分:144
Bbs1
本版专家分:77
Bbs7
本版专家分:25542
Blank
红花 2009年6月 专题开发/技术/项目大版内专家分月排行榜第一
2009年5月 专题开发/技术/项目大版内专家分月排行榜第一
2009年4月 专题开发/技术/项目大版内专家分月排行榜第一
2009年3月 专题开发/技术/项目大版内专家分月排行榜第一
2008年12月 专题开发/技术/项目大版内专家分月排行榜第一
2004年5月 VC/MFC大版内专家分月排行榜第一
Blank
黄花 2008年9月 专题开发/技术/项目大版内专家分月排行榜第二
Blank
蓝花 2009年10月 专题开发/技术/项目大版内专家分月排行榜第三
2009年2月 专题开发/技术/项目大版内专家分月排行榜第三
其他相关推荐
【VS开发】TCP服务端如何判断客户端断开连接
原文出自:http://www.cnblogs.com/youxin/p/4056041.html 一篇文章:   最近在做一个服务器端程序,C/S结构。功能方面比较简单就是client端与server端建立连接,然后发送消息给server。我在server端会使用专门的线程处理一条socket连接。这就涉及到一个问题,如果socket连接断开(异常,正常)后,我如何才能感知到?
TCP服务器如何判断客户端Socket断开连接 - ZYNQ7021学习
       ARM上基于Linux编写的 TCP 服务器,当客户端断开连接时,使用 select 函数的情况下,服务器仍然会接收到一个信号,在 select 函数会将这个设备描述符标记为可读/写,然后调用 recv 函数,若 recv 函数返回值为 0,则表示客户端已经断开服务器需要将对应的 Socket 套接字关闭掉,让数据写回磁盘,并释放文件所占用的资源。 第一步        判断多...
Tcp通信中服务器处理客户端意外断开
所谓意外断开,是客户端(多指支持3G的移动设备)指并没有关闭socket,双方并未按照协议上的四次挥手去断开连接,一般的处理办法都是利用保活机制。而保活机制分又可以让底层实现也可自己实现。 一、双方拟定心跳(自实现) 一般由客户端发送心跳包,服务端并不回应心跳,只是定时轮询判断一下与上次的时间间隔是否超时(超时时间自己设定)。服务器并不主动发送是不想增添服务器的通信量,减少压力。 但这会出现
TCP异常处理(accept返回连接中止)与SO_LINGER选项
一、accept返回前终止分析 问题一: 因为accept是堵塞的, 并且等待来自客户端连接, 但是, 如果在accept期间 , 如果因为系统调用中断了accept就会返回一个非致命的错误, 而此时有来自客户端进行TCP三路握手完成后, 而我们通过循环在此调用accept函数可以完成连接,。因为TCP的连接是在内核中完成的, 与accept函数的执行无关。 问题二: 如果我们在调用ac
esp8266 作为 tcp server,客户端连接后再断开,这样反反复复多次,第6次就再也连不上了
按照esp8266官方提供的tcp server示例代码ESP8266 as TCP server,在ESP8266 RTOS SDK 1.5版本上测试,发现同一个客户端,连续连接断开,再连接断开,这样反反复复5次,在第6次的时候,就再也连不上了,显示服务器拒绝连接。 使用的客户端是电脑端的tcp test tools,直接连接192.168.4.1监听的端口。 后来分析了SDK底层的espcon
Qt TCP客户端无法连接服务器
自己封装了一个server类,继承自QTcpServer,在mainwindow中生成该类的实例化对象myTcpSerber并对6666端口进行监听 Server myTcpServer; if(!myTcpServer.listen(QHostAddress::Any,port_ID)) // 6666端口 { qDebug()<
解决TCP通信客户端断开连接服务器自动关闭
服务器断开主要是 客户端断开后产生了 SIGPIPE信号   在对的位置忽略掉该信号就可以了! 蓝色框体为我自己测试结果!框体左边的是查的大牛们的讲解。 哈哈!第一次写博客 还请多包涵!都不会用这玩意儿 ...... 囧...
TCP建立连接断开连接状态详解
TCP连接的建立可以简单的称为三次握手,而连接的中止则可以叫做 四次握手。   建立连接   在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接。 第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认; 第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送
linux socket tcp server 解决客户端socket断开后, 服务器端进程退出的问题
服务器监听并接受一个客户端链接的时候, 可以不断向客户端发送数据, 这时如果客户端断开socket链接, 服务器继续向一个关闭的socket 发送数据(send, write)的时候, 系统会默认对服务器进程发送一个SIGPIPE信号, 这个信号的默认动作就是终止当前服务器进程. 所以为了解决客户端断开后导致服务器进程结束的问题, 使用如下方法忽略SIGPIPE信号. struct siga
QT tcpsocket 在断开后重新连接程序直接崩溃
最近再写tcp程序时无意中碰到个问题,tcp客户端断开连接后再重新连接,发送数据直接报错:  ASSERT: "m_buf" in file c:\users\qt\work\qt\qtbase\include\qtcore\5.9.1\qtcore\private\../../../../../src/corelib/io/qiodevice_p.h, line 116  后来定位到
如何解决“W5500芯片在TCP_Client模式下,断电重启之后无法立即连接服务器”的问题
Q: 芯片在TCP_Client模式下,断电重启之后无法立即连接服务器R: 这是由于客户端没有主动发送断开请求,造成服务器并不知道Socket已发生异常断开; 重新上电之后,芯片以相同的IP和端口连接服务器,而服务器还认为此Socket链接存在,所以拒绝芯片的立即连接。A: 解决方案:在芯片使用KEEP_ALIVE机制,一段时间内发送呼吸包,如果芯片没有给服务器回复,服务器则判断链接已断开,并释...
TCP之种种连接异常
出处:http://www.cnblogs.com/wanpengcoder/p/5356776.html 1. connect出错: (1) 若TCP客户端没有收到syn分节的响应,则返回ETIMEOUT错误;调用connect函数时,内核发送一个syn,若无响应则等待6s后再发送一个,若仍然无响应则等待24s后在发送一个,若总共等待75s后仍未收到响应则返回错误; (2) 若对
34-异常处理(accept 返回连接中止)
网络编程的难度在于异常状况的处理。在前面学习 TCP 协议的时候,我们就分析过各种连接异常,断开异常等等,大家要把各种情况烂记于心。本文我们探讨一种比较特殊的情况,即客户端连接建立成功后(进入 ESTABLISHED 状态),立即关闭连接退出。而此时服务器中的 accept 函数还没调用或者还没有返回。1. 实验代码1.1 代码托管地址git clone https://git.oschina.ne
浅析TCP连接过程中server异常情况处理
#浅析TCP连接过程中server异常处理 基础环境:腾讯云ubuntu虚拟机 前置基础:对TCP连接有一个基本认识,能写进行简单socket编程 先简单介绍一下TCP编程流程TCP简易编程流程1.TCP服务器端编程流程如下: 创建套接字socket; 绑定套接字bind; 设置套接字为监听模式,进入被动接受连接状态listen; 接受请求,建立连接accpet; 读写数据re
C#进行SOCKET开发---当连接与与服务器断开时的问题
近日在进行SOCKET开发时,遇到了一个问题,就是当客户端非正常退出时,服务端检测不到SOCKET的状态,使用Connected属性仍然为true,我通过查阅资料和试验,目前使用下面的思路来解决这一问题。 C#中判断socket是否已断开的方法在C#中,Socket类的Connected属性只表示最后一次I/O操作的状态,如果这之后[连接的另一方]断开了,它还一直返回true, 除非你再通过socket来发送数据。所以通过这个属性来判断是行不通的!
linux C语言 SOCKET 服务器断开导致客户端SEND崩溃问题解决办法
原文来自:http://blog.chinaunix.net/uid-24830931-id-3786670.html 一、现象描述 在利用librdkafka同kafka broker通信过程中,当kafka broker意外退出时(如kill -9),librdkafka接口的sendmsg接口报出了“Program received signal SIGPIPE, Broken
TCP连接断开情况处理
linger选项打开时: 被动关闭的一端,检查socket的读状态会返回0,但可读的数据长度为0。可以依据它来快速关闭半关闭的socket连接。 closesocket也不是真正意义上的阻塞,它其实是指是否等待关闭,受套接字选项SO_LINGER和SO_DONTLINGER的影响。 若SO_DONTLINGER或SO_LINGER的间隔=0时,closesocket就是非等待关闭的,但是当S
java中判断socket服务器端是否断开连接
最近在开发中遇到一个问题,就是如何判断远端服务器是否已经断开连接,如果断开那么需要重新连接。 首先想到socket类的方法isClosed()、isConnected()、isInputStreamShutdown()、isOutputStreamShutdown()等,但经过试验并查看相关文档,这些方法都是本地端的状态,无法判断远端是否已经断开连接。 然后想到是否可以通过OutputStre
长期使人困惑的问题:TCP连接中断的实时检测
目前TCP/IP已经成为网络的主导技术。通过对TCP底层实现的分析,对TCP/IP编程中一个长期使人困惑的问题----网络连接中断的实时检测—进行深入的分析,并提出相应的解决方案。      0引言   作为现代网络的主导技术,TCP/IP编程看起来非常简单,但在经历了最初的高效率后,往往会在细节面前停滞不前,这常常是因为对TCP协议底层细节的缺乏了解所导致的。   TCP是面向连接协议,
RF 无法连接服务器,这可能由于连接的服务不存在,TCP 错误代码 10061
RF手持终端设备调用后台WCF通讯模式下的服务端,错误提示“无法连接服务器,这可能由于连接的服务不存在,TCP 错误代码 10061”,初始觉得诡异,因为RF能够正常登录、查询,以及做其它功能,但是就只有一个功能报这个错误,最终发现原来该功能使用的实体类中增加了一个新的字段,而RF客户端程序中还没有增加,注释掉该实体类中的字段,再次发布服务,一切正常!这可能与本次使用的接口中定义的Service
关于网络编程中服务器出现故障的三种情况(TCP协议)
1  服务器主机崩溃     模拟操作:当客户端服务器成功连接之后,拔掉服务器的网线,此时从客户端发送数据分节。这样同时也模拟了客户端发送的数据不可达服务端的情景(即建立连接后某些中间路由器不工作)。     产生后果:客户端会持续重传未收到确认的数据分节(TCP软件负责),持续一段时间后仍未收到确认则放弃(通常是9分钟)。如果是服务器崩溃则本机TCP软件会向用户进程显示套接字错误并置错误
Lwip 断连,连接几次后不通及偶尔不通的问题.
struct tcp_pcb *tcp_find_distant(void) { #if LWIP_AUTO_FREE_ACTIVE_PCB     struct tcp_pcb *pcb  = NULL;     struct tcp_pcb *last_pcb  = NULL;     unsigned long last_tick = get_sys_tick();     in
qt TcpSocket 对连接服务器中断的不同情况进行判定
简述 对于一个C/S结构的程序,客户端有些时候需要实时得知与服务器连接状态。而对于客户端服务器断开连接的因素很多,现在就目前遇到的情况进行一下总结。 分为下面六种不同情况 客户端网线断开客户端网络断开客户端通过HTTP代理连接服务器,代理机器断开代理客户端通过HTTP代理连接服务器,代理机器的网络断开客户端通过HTTP代理连接服务器,代理机器的网线断开服务器断开 同时对
w5500TCP server解决有时连接断开问题
w5500TCP server解决有时连接断开问题,可以保持客户端服务器端一直通信
GCDAsyncSocket 客户端连接成功后即主动断链
昨晚一切正常,今早发现这个世界变了…… GCDAsyncSocket建立的客户端主动连接服务器后,立即断连,然后重连,然后继续断连…… 经跟踪发现,是由于连接成功后,GCDAsyncSocket的回调函数CFReadStreamCallback和CFWriteStreamCallback分别收到了kCFStreamEventErrorOccurred消息,错误原因为:The oper
云主机供应商防火墙导致的TCP连接无法建立问题
今天遇到一个非常诡异的问题。具体表现如下(两台机器分别用src和dst表示,两台机器在不同的数据中心,连接需要走公有网络)在src主机,访问dst的8181端口,发现连接无法建立。src访问dst的非8181端口,连接正常建立在src主机所在的集群,访问dst的8181端口,连接正常建立在其它外网设备访问dst的8181端口,连接正常通过内网访问dst的8181端口,连接正常两个服务器都没有设置防...
Tcp服务端判断客户端是否断开连接
今天搞tcp链接弄了一天,前面创建socket,绑定,监听等主要分清自己的参数,udp还是tcp的。好不容易调通了,然后就是一个需求,当客户端主动断开连接时,服务端也要断开连接,这样一下次客户端请求链接的时候才能成功链接。       然后就开始找各种方法。其中简单的是看recv()返回为0,表明断开了链接,但是recv函数始终返回SOCKET_ERROR,找不到原因。。。。。。。。。。。。
用端口复用技术解决tcp连接服务器主动关闭连接后不能立即重启的问题
本例中端口复用可以让服务器中多个socket共同使用同一个端口号。 问题描述:在tcp连接下,如果服务器主动关闭连接(比如ctrl+c结束服务器进程),那么由于服务器这边会出现time_wait状态,所以不能立即重新启动服务器进程。 解决这个问题就可以用端口复用,让多个socket可以同时绑定在一个ip和端口上,这样,就算是上一个socket处于time_wait状态占用着该端
C#+Socket客户端断线重连的解决办法
流程如下: 程序开始 -> 先connect一下服务端 -> 若连接成功 -> 程序继续执行该干嘛干嘛                                                        |                                                        |                            
Android TCP连接问题
public boolean Init() { boolean rt = false; try { if (connSocket != null) { // this.Close(); } connSocket = new Socket(); // 初始化Socket对象 connSocket.connect(new InetSocketAddress("1
解决问题的记录【一】TCP连接过多导致新连接创建失败
工作中项目在现场跑的过程中遇到的问题,8080端口TCP连接轻松破万,导致运行的过程中有概率无法初始化socket问题。知识学习和问题排查的过程如下: 1.DOS查看网络端口情况的命令 在这里我们使用命令netstat -ano > c:\netstatus.txt 将网络情况输出到文件中。   协议  本地地址          外部地址        状态           PID
tcp 服务端如何判断客户端断开连接
一篇文章:   最近在做一个服务器端程序,C/S结构。功能方面比较简单就是client端与server端建立连接,然后发送消息给server。我在server端会使用专门的线程处理一条socket连接。这就涉及到一个问题,如果socket连接断开(异常,正常)后,我如何才能感知到?server端这边是绝对被动的,sever端不能主动断开连接。也没有连接链路维持包之类的。client端发
GOLANG探测HTTP连接断开
考虑基于HTTP的RPC,或者HTTP服务器主动通知客户端的机制,就是HTTP Long-Polling,意思就是客户端发起一个长连接服务器阻塞忍住不响应直到: 超时,比如5秒后,我们给客户端响应一个keepalive,意思是现在还没有啥事,请继续polling。 拿到结果,这个可能是任何时候,比如300毫秒、1100毫秒、2300毫秒拿到一个事件,响应给客户端,实现了有事件异步通知。 这样客户端
利用asio实现了一个服务器,多个客户端连接,并异常断开连接,发现后面再也连接不上服务器了,不能建立新连接了。原因分析
最近利用Boost::asio实现了一个服务器,测试过程中发现大量客户端连接服务器,然后客户端异常断开之后,已经连接客户端能正常工作,但是却不能建立新的客户端连接了。 原因分析: 使用netstat  -nlpt 查看分析 发现服务器监听端口正常 netstat -ap查看已经建立的连接数量 发现该服务器存在大量的close_waiting和last_ack的状态的半连接,甚至
发现TCP的一种错误----客户端连接失败(10055错误号)
客户端连接7302TCP端口失败,关闭程序,启动sockettool也不行,出现错误号为 10055(发现队列满了或者空间不足)。通过查网上资料,发现有两个方法:设置 (         TcpTimedWaitDelay和MaxUserPort设置 ) 本截图只设置了 MaxUserPort(队列----增加),如果还不行,再设置TcpTimedWaitDelay(关闭连接到释放资源需
服务器主动断开连接异常
简单的说,当TidTCPServer调用Read方法接收数据时、或调用Write方法发送数据时,客户端主动直接断开连接,就会触发该异常;这是正常,忽略这一错误就可以了。 Indy : Connection Closed Gracefully Connection Closed Gracefully  Author: Chad Z. Hower  Homepage: h
Linux网络编程中服务端判断客户端断开连接
项目使用了select模型,所以这里只贴出此模型下的客户端连接断开判断: 主要是select返回后,正常recv,如果recv的返回值小于0则表示客户端连接断开。 /*select等待*/ err = select(maxfd + 1, &scanfd, NULL, NULL, &timeout) ; switch(err) { case 0:/*超时*/ //g_log.Error(
QT 中Socket客户端服务器异常断开后重连
    在现在的项目开发中,经常要使用TCP/IP协议来进行通讯,但有时候与服务器端的链接由于网络问题导致连接异常或断开,这就需要我们的软件能自动重连,在Linux中,我们的思维一般是通过心跳包来监控连接是否断开,有时候还单独开一个线程,但是在QT中,就变得简单多了,当连接异常断开时,会触发相应的信号,我们只要在这个信号对应的槽函数中做重连处理就可以了,不需要另开线程也不需要心跳包。由于网上查的Q...
TcpClient和TcpListener断开自动重连
在使用QQ的时候,有时候因为网络原因断网使QQ断线,这时候QQ客户端发现与腾讯代理ServerTCP链接中断,而做出每隔多久进行自动重连的行为。 服务端使用TcpListener监听来自客户端的链接: class Program { static void Main(string[] args) { IPAdd
GCDAsyncSocket TCP连接服务器注意点
一、服务器 注意点: 1、- (void)socket:(GCDAsyncSocket *)sock didAcceptNewSocket:(GCDAsyncSocket *)newSocket; 这里方法里面一定要把这个newSocket,作为一个属性持有 后面的- (void)socket:(GCDAsyncSocket *)sock didReadData:(NSData *)dat...
客户端怎么判断Socket连接已与服务器断开
First of all , Server's socekt is not close. if u had closed client's socekt , u should creat it again when u want to connect server's. socket即使close了,也还是会存在的,除非设置socket的option,设置为立即close 看一下sets
总结一下今天tcp服务器的一个rst问题
X项目
QT TCP服务端如何判断客户端断开连接
在用QT写服务端时想要知道客户端是否断开连接,百度一下没有找到方法,看了下帮助文档,得到以下方法,实测可用,如有更好的还请告知 enum SocketError {           ConnectionRefusedError,           RemoteHostClosedError,//客户端断开时出现这个错误           HostNotFound
recv函数说明返回
客户端的程序连接服务器后recv函数阻塞接受,有时会返回0,说明接收超时服务器主动断开连接,需要重新connect服务器,但重新connect时会报“Transport endpoint is already connected”!!!返回0时正确处理方法是什么呢,大虾指教啊!!!!! 现象:说明服务器主动断开客户端连接 客户端应该调用close关闭,然后再连接 原因:
C++基础--完善Socket C/S ,实现客户端服务器断开重连
// WindowsSocketServer.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include #include #include #include #include #pragma comment(lib,"Ws2_32.lib") using namespace std; #define PORT 8080
TCP/IP详解 卷1 协议(英文版)
TCP/IP
lwip断线重连问题7.7
问题描述: 客户端用一个固定的端口连接远方服务器,首次连接建立后,关闭服务器,此时客户端检测到连接断开,自动每隔一定时间尝试重新连接。要求在远程服务器再次启动后,自动恢复客户端服务器连接。 方法:关闭服务器断开连接,此时服务器的端口资源尚未释放,如果立刻重新连接,会连接失败。此时只要拔掉网线,等待一段时间,重新启动服务器服务器那边会释放端口资源,再用固定端口连接服务器,就可以了
Qt实现Socket断线重连机制
简述 创建 Thread 类 继承 QThread,实现用单独的线程接收 socket 数据。 当 socket 与主机断开时,自动触发 OnDisConnect() 函数,从而在 run() 中执行自动重连代码段。 想主动断开 socket 连接时,把 m_isThreaStopped 设置为 true 即可。 简述 类的源码 类的使用 效果图类的源码Thread.h#ifndef THREAD
tcp连接检测及重连
mina
及时释放服务端与客户端之间的TCP连接的方法
及时释放服务端与客户端之间的TCP连接的方法TCP的状态转换图 先贴上tcp状态转换图,方便后面分析问题 感知对端关闭,及时关闭己方连接  前几天遇到了一个问题,服务端下线,主动断开连接。但客户端并没有感知到,而是继续使用该连接,导致下次调用服务端报错。  查看客户端和服务端的tcp状态,服务端处于FIN_WAIT_2状态,而客户端处于CLOSE_WAIT状态。  结合
TCP能检测到"断网""断电"事件吗(面试可以问倒很多人)?
我们知道, tcp的建立和拆除需要经历三次握手和四次挥手, 那么当客户端服务器建立了tcp连接之后,突然断掉网线或者掉电, 两侧的tcp状态会有什么变化呢? 对于不了解tcp的人, 肯能会直接说: 能检测。 我曾经给出了一个貌似正确的答案: 不能检测。
三丶TCP处理客户端异常与正常关闭情况
这个问题在TX 面试的时候问过我。 不过当时demo并没有注意这个问题, 还好面试官换问题了。。一: 正常关闭:    如果客户端是主动申请close , 会发送一串byte数 为0的数据到服务器服务器就会收到count个数为0,则表示正常关闭。此时服务器正常操作close(这里有个问题是,即便客户端自己正常发送空数据进来,服务器也不会收到0数据,所以当服务器收到0的时候就代表客户端请求正常关闭...
客户端断开socket连接, 服务端send 向一个失效的socket 发送数据,导致服务的进程退出
问题描述: 客户端断开socket连接, 服务端send 向一个失效的socket 发送数据,导致服务的进程退出。 原因分析: 在linux下写socket的程序的时候,如果尝试send到一个disconnected socket上,就会让底层抛出一个SIGPIPE信号。 这个信号的缺省处理方法是退出进程,大多数时候这都不是我们期望的。因此我们需要重载这个信号的处理方法。 解决方法可以有两...
TCP连接断开详解(socket通信)
一、TCP数据报结构以及三次握手 TCP(Transmission Control Protocol,传输控制协议)是一种面向连接的、可靠的、基于字节流的通信协议,数据在传输前要建立连接,传输完毕后还要断开连接客户端在收发数据前要使用 connect() 函数和服务器建立连接。建立连接的目的是保证IP地址、端口、物理链路等正确无误,为数据的传输开辟通道。 TCP建立连接时要传输三个数
TCP/IP:连接服务器失败(错误原因:Connection refused)
TCP/IP:连接服务器失败(错误原因:Connection refused) Linux中,通过系统调用(system call) connect 连接指定服务器建立TCP连接。 connect 最常见的失败原因是 Connection refused。 假设服务器IP是192.168.44.148,且并 未有 进程监听端口是12500时: 若有TCP连接请求包到达192.16...
【网络编程】TCP异常断开处理方法
TCP异常断开 心跳检测机制 在TCP网络通信中,经常会出现客户端服务器之间的非正常断开,需要实时检测查询链接状态。常用的解决方法就是在程序中加入心跳机制。 Heart-Beat线程 这个是最常用的简单方法。在接收和发送数据时个人设计一个守护进程(线程),定时发送Heart-Beat包,客户端/服务器收到该小包后,立刻返回相应的包即可检测对方是否实时在线。 该方法的好处是通用,但缺点就
TCP链接异常关闭的情况
终止一个连接的正常方式是发送FIN。 在发送缓冲区中 所有排队数据都已发送之后才发送FIN,正常情况下没有任何数据丢失。 但我们有时也有可能发送一个RST报文段而不是F IN来中途关闭一个连接。这称为异常关闭 。  进程关闭socket的默认方式是正常关闭,如果需要异常关闭,利用 SO_LINGER选项来控制。 异常关闭一个连接对应用程序来说有两个优点: (1)丢弃任何待发
TCPIP服务端检测客户端断开方法
TCPIP服务端检测客户端断开方法
服务端主动终止连接的情况分析
前面我们已经学习了基本的网络套接字编程,下面是与本文相关的网络编程源码github连接: https://github.com/clearoff/Network-Code/tree/master/%E6%9C%8D%E5%8A%A1%E5%99%A8%E5%92%8C%E5%AE%A2%E6%88%B7%E7%AB%AF(1V1) 然后下面我们给出与本文相关的博客连接,因为涉及到了TCP的“三次
关于LWIP断开网线后重连问题(热插拔问题)
最近在弄STM32+LWIP协议,在网络拔掉网线情况下,无法重新连接。网上找了好多方法都没有实现,着实郁闷!后来无意间看到了暂时解决这一问题的方法,虽然不是那么完美,但最算能解决问题。分享给大家。 问题:LWIP建立一个TCP服务器,收发数据也正常。但是客户端非正常断线-如客户端掉电,突然拔掉客户端的网线,然后重新连接服务器,就连接不上了。 原因:LWIP_CLOSE(),在非
客户端socket关闭时,select模型的server端该如何完美的释放掉连接的socket? [问题点数:100分,结帖人guopo]
首先谢谢各位! 我是希望高人给我提供个服务器端的编程模型。 我的服务器端会接收多个客户端连接,并接收客户端发来的数据。由于我客户端会频繁的连接和关闭,所以我想在客户端关闭之后,服务器端作相应的处理。我是在每个客户端连接后都加入到一个链表中,并开出一个线程用select来检测连接的socket可读性,如果可读,就接收客户端的数据。 更多0分享到: 准备好
TCP客户端连接策略
不久前,我的Socket Client 程序遇到了一个非常尴尬的错误。它本来应该在一个 socket 长连接上持续不断地向服务器发送数据,如果 socket 连接断开,那么程序会自动不断地重试建立连接。 有一天发现程序在不断尝试建立连接,但是总是失败。用netstat 查看,这个程序竟然有上千个socket 连接处于CLOSE_WAIT 状态,以至于达到了上限,所以无法建立新的
5种TCP连接中出现RST的情况。连接复位Reset a connection.
目录:[ - ] 1 端口未打开 2 请求超时 3 提前关闭 4 在一个已关闭的socket上收到数据 5.用于拒绝一个非法连接 总结 参考文献: 应该没有人会质疑,现在是一个网络时代了。应该不少程序员在编程中需要考虑多机、局域网、广域网的各种问题。所以网络知识也是避免不了学习的。而且笔者一直觉得TCP/IP网络知识在一个程序员知识体系中必需占有一席之地的。
怎样解决W5200/W5500在TCP通信过程中意外断开?(Keepalive)
在使用W5200和W5500的TCP通信过程中,有一个非常容易被问到的问题:(这里以W5200为例)W5200作为服务器,假如客户端的网线断开 或 瞬间停电,服务器该怎样判断?那么当客户端由于这些原因忽然断开,该怎样解决?今天给大家介绍解决以上问题的办法,即如何使用Keepalive。
TCP/IP 如何断开连接
【注意】中断连接端可以是Client端,也可以是Server端。 假设Client端发起中断连接请求,也就是发送FIN报文。Server端接到FIN报文后,意思是说"我Client端没有数据要发给你了",但是如果你还有数据没有发送完成,则不必急着关闭Socket,可以继续发送数据。所以你先发送ACK,"告诉Client端,你的请求我收到了,但是我还没准备好,请继续你等我的消息"。这个时候Cl
Socket 编程经验谈---如何处理socket连接服务器端或客户端断开
现象:服务器端等待客户断连接,当socket连接建立后,如果客户端异常断开服务器会抛出异常,从而导致程序运行中断 目标:希望服务器一直等待连接客户端中断后程序不退出,而客户端重新恢复后可以继续保持连接 代码: public class Receive { public static byte[] buffer= new byte[1024]; public static Man
ACE 多线TCP服务端-客户端通信
实现的功能是每一个客户端发送的信息,通过服务器,都可以转发给其它所有人看到。 前提是所有人
Socket服务器断开后重新打开,客户端将自动完成链接
Socket通信技术。利用到了Thread技术,完成了,服务器开启,一直监听客户端功能,两点是,当服务器断开后重新打开后,客户端能自动链接到服务器端,由于网络原因最多延迟2分钟
libevent异步TCP连接,判断是否连接成功
 参考: http://stackoverflow.com/questions/16074981/how-to-check-if-connection-is-established-when-use-libev-with-non-block-socket
客户端连接不上服务器
服务器close一个连接时,若client端接着发数据。根据TCP协议的规定,会收到一个RST响应,client再往这个服务器发送数据时,系统会发出一个SIGPIPE信号给进程,告诉进程这个连接已经断开了,不要再写了。根据信号的默认处理规则SIGPIPE信号的默认执行动作是 terminate(终止、退出), 所以client会退出。 若不想客户端退出可以把 SIGPIPE设为SIG_IGN
服务器或者客户端异常退出,其相应的客户端或者服务器如何来判断是在等待发送还是退出?
服务器或者客户端异常退出,其相应的客户端或者服务器如何来判断是在等待发送还是退出? 当对等方断开连接,情况会有以下2种情况:  1  软件断开:这种情况,对等放会发来FIN,所以recv函数会返回,并返回0。 2  物理断开:这种属于灾难性,比如海底光缆被大白鲨咬断了等等。你的recv函数不会有任何响应,45分钟后,它将返回一个错误,这是TCP保活定时器产生的事件。 如何知
安卓 java有效判断Socket连接断开和安卓TCP测试APP(客户+服务端一体)
1. 利用socket提供的isConnected()与isClosed()方法来判断。但这种方式只是本地判断,只是本地操作connect()或close()方法后保存的一个状态,对于远程服务器主动断开就没有用了。 2. 利用socket中的sendUrgentData()来判断。这种方法不管是客户端主动断开还是服务器主动断开,亦或者是异常断开都是有用的。但这种方法有一个明显的缺点,它得向服务器
ActiveMQ发送消息出现连接失效问题
最近玩起了Docker和ActiveMQ之后,想起可以在Docker中搭建一个ActiveMQ容器来运行ActiveMQ环境,当我费劲千辛终于搭建好了容器之后,我照着视频老师的代码做了一遍,发现出现了连接失败问题,起初我以为是我的容器端口映射出现了问题,我在本地连接容器是完全没有问题的,然后我翻阅ActiveMQ的文档发现使用的传送协议是TCP协议,我有回头将容器的TCP协议端口打开了,发现还是不
tcp连接失败触发的异常
最近, 我的模块作为客户端去访问别人的模块, 平时好好的, 但在某个时间段内, 出现大量错误。 看了一下log, 是连接失败。 因为这个时间已经过了, 问题已经恢复了, 所以不太方便抓包定位, 只能看当时的log.         还好, 在失败的时候, 我记录了对段的ip和port,  找对方确认, 对方开始觉得没有问题。  我觉得不是。         于是分析了一下对端ip和port的分
如果服务端重启,那么客户端的长连接会怎么样
这里记录一次服务端重启时,使用winshark的抓包过程; 场景是:SDK 建立对 服务端的长连接客户端连接策略是: 失活判断: 一条连接 180s都没有read到数据; 保活判断: 每秒检查一次,连续60次检查都为空闲,那么发送一次keeplive包。 重连逻辑: 如果连接断开,那么会以2s 、 4s、  6s、  8s...这样的递增产生的时延,去重连,每次连接等待5s判断连接
connect成功之后,accept返回之前,客户端服务器的链接是否已建立
这是之前面试时被问到的一个问题,当时以为客户端connect,服务端accept才表示三次握手完成,连接建立,因此回答的是。 面试官笑笑让我回去再查查。 后来了解到,connect返回成功后,三次握手就已经完成了。 已完成的链接会被放入一个队列中,accept的作用就是从已连接队列中取出优先级最高的一个链接,并将它绑定给一个新的fd,服务端就可以通过这个心得fd来recv和send数据了
客户端连接WebSocket服务器连接失败会出现的一些问题及解决方案
      前段时间自己在本地写的一个WebSocket程序部署到服务器出现了几个错误,我自己也做了记录和分析,最后总结出来给大家看一下,希望能帮助大家规避掉这些问题。同时给现在正在做WebSocket和正准备想做WebSocket的程序猿多指出一条较为效率的路。 Q1 客户端链接WebSocket服务器连接失败,报404错误。      排查了地址错误和配置相关后,是因为JAR冲突,因为To...
重置TCP/IP协议解决Windows Server 2008连接中断问题
现象: 通过远程桌面及UNC方式连接服务器时偶尔出现连接中断,并在一段时间内同一IP被拒绝连接。 检查事件日志,在“系统”分类中有错误记录,来源:TermDD,事件ID:56,描述:终端服务器安全层在协议流中检测到错误,并已取消客户端连接。 解决: 重置TCP/IP栈,在命令提示符模式下输入netsh int ip reset resetlog.txt,执行。 重启电脑。 注意
socket连接,判断连接中断,如果中断,并自动重连。
    最近在开发中遇到一个问题,就是如何判断远端服务器是否已经断开连接,如果断开那么需要重新连接。      首先想到socket类的方法isClosed()、isConnected()、isInputStreamShutdown()、isOutputStreamShutdown()等,但经过试验并查看相关文档,这些方法都是本地端的状态,无法判断远端是否已经断开连接。      然后想到是否可以通过OutputStream发送一段测试数据,如果发送失败就表示远端已经断开连接,类似ping,但是这样会影响到
Java NIO SocketChannel客户端例子(支持连接失败后自动重连)
这两天想找找标题里说的这个示例代码,发现网上这么多教程,连怎么样实现自动重连都不讲,所以把自己写的例子贴上来。仅仅使用递归,不使用多线程,就可以实现初步的目的: import java.io.IOException; import java.net.ConnectException; import java.net.InetSocketAddress; import java.nio.ByteB
ESXI5 运行一断时间后,客户端连接不上的问题解决
ESXI5 运行一断时间后,客户端有时会连接不上, 这是由esxi5的一些服务故障。  用shell 客户端连接服务器后 执行下面脚本来重启所有服务。 不会影响线上其它服务 # services.sh restart 执行结果如下图
服务器客户端发送数据自动中断
问题现象: 客户端接收服务器端数据出现假死现象。 环境描述: 1.      客户端是window程序 2.      服务器端是Linux程序 3.      服务器端程序和客户端程序采用TCP进行通讯 问题分析: 1.      首先,客户端上进行抓包,对其数据包进行分析,发现服务器端发送的数据总是不完全 2.      其次,服务器上进行抓包,发现发送一会儿后,发送端的TCP
tcp 在调用connect失败后要不要重新socket
原文  http://blog.csdn.net/junjun150013652/article/details/37966901 主题 Socket TCP/IP 对TCP套接字调用connect会激发三次握手,如下: 客户端是主动打开连接的一端,会发送第一个SYN分节,然后等待确认,此时连接状态为 SYN_SENT ,当收到服务端的确认后连接建立,状态变为 E
用select检测对方断开tcp连接
使用阻塞式socket发送和接受数据,但是由于没有建立心跳机制,远端服务器在一定时间内(系统设定)没有活动数据,就会断开连接。 无奈只能在每次发送数据之前检测对方是否断开连接,当然在发送数据之前检测的目的是保证这次发收数据不会因为对方断开连接而接受数据失败(对方断开连接,发送还是会成功的)。这个方法比较挫~ 使用了select + recv   fd_set read_set; st
关于客户端断开连接服务器抛出异常Connection reset
学习了socket  ,在做一个类似qq的c/s结构的聊天软件。发现了一个问题 就是在客户端服务器通信后,服务器客户端开启一个线程,使用while(true)循环时刻监听是否有通信。 在界面开启时没有任何异常,可是当界面关闭 就一直抛出异常了。 开启线程代码如下: 异常内容如下: java.net.SocketException: Connection reset at
C# socket服务端判断 客户端已经断开连接的一个小办法
具体原理就是: If the remote host shuts down the Socket connection with the Shutdown method, and all available data has been received, the Receive method will complete immediately and return zero bytes. 中文翻
srs 服务器客户端断开连接后,服务器代码跟踪分析
最近有个疑问,当客户端主动断开连接的时候srs服务器是怎么主动断开的,gdb跟踪。 我发现的有两种情况: 1.客户端主动断开连接情况:客户端连接服务器后,一直ret = do_publishing(source, &trd);这个函数哪里等待(代码如下), 当客户端主动断开后,就继续运行后面的 trd.stop(); 这个trd.stop()才是服务器断开客户端退出线程的关键地方。
tcp连接失败分析
前端时间业务团队在使用平台oidb中转服务的时候,偶尔出现connect失败的情况。这里简单总结下connect失败的可能原因,供参考。   一。网络不通 由于iptables防火墙隔离等原因,导致两台机器之间无法连接。   二。网络波动 偶尔出现的网络故障,导致两台机器之间连接失败。一般可以通过ping找到蛛丝马迹   三。client端分配不到“端口” 可能的原因有2个:
关于Socket连接,远程主机强制断开
服务器端的程序与客户端的程序进行通信的过程中,如果客户端程序由于断电,断网等原因掉线,服务器端的程序是无法检测到客户端断开连接的。解决办法一是设置超时值,当服务器端在多长时间接收不到数据时就默认对方已经不在线了。另一种方法就是设置心跳机制,即客户端服务器端的程序,每隔一定的时间为对方发送一个心跳包,对方并予以回复,如果不回复,则就认为是对方已经断开连接
C# Socket服务器端如何判断客户端断开求解
Socket client //假如已经创建好了,连接服务器端得Socket的客户端对象。 我们只要client.Poll(10,SelectMode.SelectRead)判断就行了。只要返回True是。 就可以认为客户端已经断开了。Poll 方法将会检查 Socket 的状态。 指定 selectMode 参数的 SelectMode..::.SelectRead,可确定 Socket
TCP建立连接断开连接流程
一、基本描述 TCP协议为提供面向连接的服务,需要先建立连接,然后才可以通信,通信结束时,需要断开连接。 二、建立连接流程 建立连接的过程也叫做三次握手,流程如下: 1、首先,一定是由客户端发起连接请求,服务端来接收连接请求。客户端发起连接请求后,会先给服务端发送一个SYN包。 2、服务端收到SYN包,会回复SYN的ACK,同时再回复SYN,但SYN和ACK是一起...
客户端断开导致服务器退出的解决方法 - ZYNQ7021学习
      客户端断开导致服务器进程退出,其根本原因是由服务器端的 send 函数导致的。在 linux 下写 socket 的程序的时候,如果尝试 send 到一个 disconnected socket 上,就会让底层抛出一个 SIGPIPE 信号。这个信号的缺省处理方法是退出进程(send函数的flags参数设置为0),不会看到任何的提示。这里介绍两种解决方法。 方法一        将...
MYSQL客户端连接断开MySQL服务器
3.1连接断开服务器连接连接服务器,通常需要在调用mysql时提供一个MySQL用户名,最有可能是一个密码。如果服务器在不同于您登录的计算机上运行,​​则还需要指定主机名。请与您的管理员联系,找出您应该使用哪些连接参数进行连接(即要使用的主机,用户名和密码)。一旦你知道正确的参数,你应该可以这样连接: shell> mysql -h host -u user -
JAVA Socket服务器 判断客户端连接断开
备忘: sendUrgentDatapublic void sendUrgentData(int data) throws IOException在套接字上发送一个紧急数据字节。要发送的字节是数据参数的八个最低位。紧急字节在对套接字 OutputStream 的所有预先写入之后但在任何以后写入之前发送。  参数:data - 要发送的数据字节 抛出:IOException - 如果发送数据时发生错误。例如: try{             ServerSocke
我们是很有底线的