TCP客户端服务器端断开的消息响应及自动重连 [问题点数:40分,结帖人whirlrain9]

一键查看最优答案

确认一键查看最优答案?
本功能为VIP专享,开通VIP获取答案速率将提升10倍哦!
Bbs1
本版专家分:0
结帖率 91.67%
Bbs7
本版专家分:22094
版主
Blank
签到新秀 累计签到获取,不积跬步,无以至千里,继续坚持!
Blank
回归勋章 授予重新回归CSDN的真爱粉用户,我们不会让你失望哒!
Blank
脉脉勋章 绑定脉脉第三方账户获取
Blank
GitHub 绑定GitHub第三方账户获取
Bbs6
本版专家分:6267
Bbs6
本版专家分:9304
Bbs6
本版专家分:6267
Bbs6
本版专家分:6267
Bbs3
本版专家分:787
Bbs4
本版专家分:1803
Bbs7
本版专家分:22094
版主
Blank
签到新秀 累计签到获取,不积跬步,无以至千里,继续坚持!
Blank
回归勋章 授予重新回归CSDN的真爱粉用户,我们不会让你失望哒!
Blank
脉脉勋章 绑定脉脉第三方账户获取
Blank
GitHub 绑定GitHub第三方账户获取
Bbs6
本版专家分:7697
版主
Bbs6
本版专家分:6267
Bbs7
本版专家分:10951
Bbs12
本版专家分:362478
版主
Blank
签到新秀 累计签到获取,不积跬步,无以至千里,继续坚持!
Blank
名人 2019年 荣获名人称号
2013年 荣获名人称号
Blank
探花 2011年 总版技术专家分年内排行榜第三
2010年 总版技术专家分年内排行榜第三
Blank
进士 2012年 总版技术专家分年内排行榜第五
Bbs1
本版专家分:72
Bbs10
本版专家分:103952
版主
Blank
进士 2012年 总版技术专家分年内排行榜第八
Blank
金牌 2012年12月 总版技术专家分月排行榜第一
2012年10月 总版技术专家分月排行榜第一
2012年9月 总版技术专家分月排行榜第一
2012年8月 总版技术专家分月排行榜第一
Blank
铜牌 2012年11月 总版技术专家分月排行榜第三
Blank
微软MVP 2014年1月 荣获微软MVP称号
2013年1月 荣获微软MVP称号
Bbs10
本版专家分:103952
版主
Blank
进士 2012年 总版技术专家分年内排行榜第八
Blank
金牌 2012年12月 总版技术专家分月排行榜第一
2012年10月 总版技术专家分月排行榜第一
2012年9月 总版技术专家分月排行榜第一
2012年8月 总版技术专家分月排行榜第一
Blank
铜牌 2012年11月 总版技术专家分月排行榜第三
Blank
微软MVP 2014年1月 荣获微软MVP称号
2013年1月 荣获微软MVP称号
TCP断线
struct sockaddr_in TempSadd; TempSadd.sin_family = AF_INET; TempSadd.sin_port = htons(m_ServerPort); TempSadd.sin_addr.s_addr = inet_addr(m_ServerIp.c_str()); ...
socket客户端断开连后不能与服务器通信
private void Form1_Load(object sender, EventArgs e) { this.comboBox1.SelectedIndex = 0; IPAddress p
TCP客户端 服务器 自动连 源码 控件封装
<em>TCP</em>的<em>客户端</em>与服务器,实现 连接后<em>自动</em>保<em>重</em>连,在另一端<em>断开</em>后<em>重</em>新启动能够<em>自动</em>连接,<em>客户端</em>与服务器都以控件形式封装并且有源码,供学习交流使用。
TCP服务突然断线,客户端如何检测到并
准备做一个串口转<em>TCP</em>的小工具,为了替代串口服务器 在SerialPort.DataReceived事件里直接tcpClient.GetStream().Write。现在已经做到:如果server没有
C# Socket断线连问题
其实这个问百度一搜一大堆 。但是没有 找到我要的答案 ,现在的问题是服务端<em>断开</em>连接后 , <em>客户端</em>就每间隔10秒去<em>重</em>连一次 ,然后等服务端回复连接时,会出现现下面这种情况,这是为什么 ,怎么解决 ,拜托
TCP四次挥手和服务器主动断开
发起<em>断开</em>连接请求可以是<em>客户端</em>也可以是服务器,即主机1,主机2可以是<em>客户端</em>也可以是服务器。  ACK : <em>TCP</em>协议规定,只有ACK=1时有效,也规定连接建立后所有发送的报文的ACK必须为1。  FIN (finis)即完,终结的意思, 用来释放一个连接。当 FIN = 1 时,表明此报文段的发送方的数据已经发送完毕,并要求释放连接。  发送序列号:Sequence Number  确认序列号:A...
TCP连接 客户端断开后,服务器端任能不断收到客户端最后一次发送的数据?
服务器与<em>客户端</em>都用select模型,<em>客户端</em>成功发送一次数据并且服务器成功接收 后,<em>客户端</em><em>断开</em>连接 (closesocket()或者强行<em>断开</em>)服务器基本上都会不断收到<em>客户端</em>最后一次发送的数据? (sel
C# + Socket断线
一、网上常用方法 1、当Socket.Conneted == false时,调用如下函数进行判断 点击(此处)折叠或打开 /// /// 当socket.connected为false时,进一步确定下当前连接状态 ///  ///  private bool IsSocketConnected() {     #region remar
Unity3d基于Socket通讯例子
本人是新手,但是找了很久都找不到类似的通讯源码,后来终于在一个网站上看到有关于Socket的通讯事例,所以就抄过来希望能够帮助更多像我一样的初学者!嘻嘻 首先创建一个C# 控制台应用程序, 直接<em>服务器端</em>代码丢进去,然后再到Unity 里面建立一个工程,把<em>客户端</em>代码挂到相机上,运行服务端,再运行<em>客户端</em>。 高手勿喷!~! 完全源码已经奉上,大家开始研究吧!! 嘎嘎嘎! 服务端代码:Pro
关于socket tcp 断线
这个问题困扰过我几次,都没有来得及研究,今天研究一下。 首先写一个最简易的socket tcp程序,连接成功后再关闭服务器然后再用<em>客户端</em>各种操作看是什么情况 测试表明 (1)<em>客户端</em>已经连接,当服务端关闭程序时,<em>客户端</em>调用send函数发送失败,WSAGetLastError() 返回10054(远程主机强迫关闭了一个现有的连接)  (2)<em>客户端</em>已经连接,当<em>客户端</em>关闭程序时,服务端调用...
C# socket断线连等异常情况处理
请教大家一个问题啊,现在做一个数据采集的软件,就是一个GPS模块通过GPRS以<em>TCP</em>的方式发送数据,我这边用socket异步多线程的方式(因为技术原因,采用的是一个GPS模块对应一个端口的方式)接收数
C# + Socket断线连 整理
一、网上常用方法 1、当Socket.Conneted == false时,调用如下函数进行判断 点击(此处)折叠或打开 /// /// 当socket.connected为false时,进一步确定下当前连接状态 ///  ///  private bool IsSocketConnected() {     #region remar
关于发送心跳包检测TCP连接是否断开
看了很多资料, 都说<em>客户端</em>如果要查看自己是否已经因为某种原因已经和<em>服务器端</em><em>断开</em>的话, 一个办法是定期给服务器发送一些数据以检查连接是否正常, 我做了一些试验, 有一些疑惑, 希望大家帮忙答疑. sen
C#之Socket断线
一、网上常用方法 1、当Socket.Conneted == false时,调用如下函数进行判断 /// /// 当socket.connected为false时,进一步确定下当前连接状态 /// /// private bool IsSocketConnected() { #region remarks /*******************************
客户端断线连、等待连服务端
需求:   若服务端先上线就等待<em>客户端</em>连接,<em>客户端</em>则正常连接。当<em>客户端</em>先上线,服务端还没上线,或当服务端掉线时,则<em>客户端</em>不断<em>重</em>新连接服务端,直到服务端上线。服务端与<em>客户端</em>任意一端掉线,能提示掉线。 解决:   服务端开一个线程,负责循环等待<em>客户端</em>连接,当<em>客户端</em>连接成功则进入循环接收<em>客户端</em>heartbeat数据检测<em>客户端</em>是否掉线,掉线则<em>重</em>新进入等待。(若需要同时服务多个<em>客户端</em>,...
C# socket物理断线连,报错。
代码如下,提示错误 1 非静态的字段、方法或属性“com.tchuin.channel.IChannel.Start()”要求对象引用 C:\Users\Administrator\Desktop\FTU代码--断线<em>重</em>连\源代码\Maintenance\Channel\network\ChannelTcpIpClient.cs 185 13 Channel 错误。 using System; using System.Collections.Generic; using System.Text; using System.Net; using System.Windows.Forms; using System.Net.Sockets; using System.Threading; namespace com.tchuin.channel.network { ///************************************************************************ //* 原不可断线<em>重</em>连的Socket的类 class ChannelTcpIpClient : IChannel { #region IChannel 成员 public event Action ReadByteArrayEvent; public event Action WroteByteArrayEvent; bool IChannel.IsStart { get { if (mSocket == null) return false; else return mSocket.Connected; } } void IChannel.Start() { mSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); IPEndPoint iep = new IPEndPoint(mServerIpAddress, mServerPort); mSocket.BeginConnect(iep, ConnectCallBack, mSocket); } void IChannel.Stop() { if (mSocket != null) { if (mSocket.Connected) mSocket.Shutdown(SocketShutdown.Both); mSocket.Close(); mSocket = null; } } int IChannel.Write(byte[] buffer) { if (mSocket == null) return -1; if (mSocket.Connected) { int wroteLen = mSocket.Send(buffer); byte[] temp = new byte[wroteLen]; Array.Copy(buffer, temp, temp.Length); if (WroteByteArrayEvent != null) WroteByteArrayEvent(temp); return wroteLen; } else return -1; } int IChannel.Read(byte[] buffer) { int readLen = mSocket.Receive(buffer); byte[] temp = new byte[readLen]; Array.Copy(buffer, temp, temp.Length); if (ReadByteArrayEvent != null) ReadByteArrayEvent(buffer); return readLen; } #endregion public ChannelTcpIpClient(IPAddress address, int port) { mDataBuffer = new Byte[1024 * 4]; mServerIpAddress = address; mServerPort = port; } private void RecieveCallBack(IAsyncResult result) { Socket client = (Socket)result.AsyncState; if (client == null) return; if (client.Connected) { int recvByteCount; try { recvByteCount = client.EndReceive(result); if (recvByteCount > 0) { byte[] buffer = new byte[recvByteCount]; Array.Copy(mDataBuffer, buffer, buffer.Length); if (socketDataArrival != null) { socketDataArrival(buffer); } } else { if (mSocket.Connected) { if (socketDisconnected != null) { socketDisconnected(); return; } } } //继续监听下一次的数据接收 client.BeginReceive(mDataBuffer, 0, mDataBuffer.Length, SocketFlags.None, RecieveCallBack, client); } catch (SocketException ex) { if (socketDisconnected != null) { socketDisconnected(); return; } else { MessageBox.Show(ex.Message, "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); ((IChannel)this).Stop(); } } } } private void ConnectCallBack(IAsyncResult result) { Socket client = (Socket)result.AsyncState; try { client.EndConnect(result); client.BeginReceive(mDataBuffer, 0, mDataBuffer.Length, SocketFlags.None, RecieveCallBack, client); } catch (Exception e) { MessageBox.Show(e.Message); } finally { TimeoutObject.Set(); } /* if (client == null) return; if (client.Connected) { client.EndConnect(result); client.BeginReceive(mDataBuffer, 0, mDataBuffer.Length, SocketFlags.None, RecieveCallBack, client); } */ } private static void socketDataArrivalHandler(byte[] data) {} private static void socketDisconnectedHandler() { Reconnect(); } private static void Reconnect() { //关闭socket mSocket.Shutdown(SocketShutdown.Both); mSocket.Disconnect(true); mSocket.Close(); //创建Socket IChannel.Start(); } //委托 private delegate void delSocketDataArrival(byte[] data); static delSocketDataArrival socketDataArrival = socketDataArrivalHandler; private delegate void delSocketDisconnected(); static delSocketDisconnected socketDisconnected = socketDisconnectedHandler; private static Socket mSocket = null; private static byte[] mDataBuffer = null; private static int mServerPort; private static IPAddress mServerIpAddress; private static ManualResetEvent TimeoutObject = new ManualResetEvent(false); }
tcp长连接中客户端
tcp长连接<em>客户端</em><em>重</em>连
服务器端通过心跳包确定客户端是否在线的问题
服务器通过gprs连接1000左右个终端 <em>客户端</em>每隔5s钟向服务端发送心跳包(心跳包中带有各gprs站的代号) <em>服务器端</em>如果在5s以内接收不到<em>客户端</em>的心跳包的话是判断为断线 目前服务端的实现方法是 将
tcp 服务端如何判断客户端断开连接
  2014-10-28 09:42 by youxin, 3104 阅读, 0 评论, 收藏, 编辑 一篇文章:   最近在做一个<em>服务器端</em>程序,C/S结构。功能方面比较简单就是client端与server端建立连接,然后发送<em>消息</em>给server。我在server端会使用专门的线程处理一条socket连接。这就涉及到一个问题,如果socket连接<em>断开</em>(异常,正常)后,我如何才能感知到?serve...
Socket断线连读数据一直处于阻塞状态
最近在做一个通讯的项目,服务器每隔2s发送一个心跳包,<em>客户端</em>也会回一个,确认连接。 但是在<em>客户端</em>多次断线<em>重</em>连后,有一定几率会出现以下状况: <em>客户端</em>与服务器成功连接,同时<em>客户端</em>可以接收到服务器发送的心跳包,但不发送返回包。 同时<em>客户端</em>任何信息都无法发送。 经过测试已知服务器在读输入流时被阻塞。 连接是用Socket获取输入输出流做的。 求问有没有谁知道问题在哪儿?
unity开发:TCP socket网络连接
unity内部封装了一个很高层次的网络接口,不过有时候并不需要那么复杂的功能,只是想实现简单的<em>TCP</em>网络连接,可以在unity里面用C#写tcp socket。 以下<em>TCP</em>连接是同步模式。 建立两个unity工程,编写脚本。 服务端 using UnityEngine; using System.Collections; //引入库 using System.Net; us
socket 客户端断线连的问题。
//初始化WinSock WSADATA wsaData; if (WSAStartup(MAKEWORD(2,2),&wsaData)!=NO_ERROR) { std::cout<Initi
客户端往服务器发送数据时,为什么只有当客户端断开瞬间服务器才能收到数据。
当<em>客户端</em>往服务器发送数据时,为什么只有当<em>客户端</em><em>断开</em>瞬间服务器才能收到数据。
Unity + Socket + Protobuff+异步+粘包拆包断包_V2
最近项目要用到Socket,遇到一些坑,比如频繁发<em>消息</em> 收<em>消息</em>,会产生粘包拆包等问题,还有断线<em>重</em>连的问题
手机客户端弱网络下的断线连处理
转载:http://gad.qq.com/article/detail/7172105
Unity + Socket + Protobuf+异步+粘包拆包断包 之 二
上章讲了SocketClinet的结构这次讲一讲怎么使用它。 我们新建一个SocketManager 来管理SocketClinet. SocketManager 是个单例,就不讲单例的知识点,想了解的可以去百度。 初始化时 创建一个Socket Clinet public void Init(string address,int port) { ...
TCP服务端-客户端(客户端具有连功能)
/* 先看<em>TCP</em><em>服务器端</em>的程序: */ #include #include #include #include #include #include #include #include #define PORT 10000 int main(int argc, char *argv[]) { int sockfd,new_fd; struct socka
socket建立tcp连接,服务器先断开连接,这时客户端使用send函数发送数据,为什么导致客户端程序挂掉?
socket建立tcp连接,服务器先<em>断开</em>连接,这时<em>客户端</em>使用send函数发送数据,为什么导致<em>客户端</em>程序挂掉?是堆栈溢出吗?
socket编程对端意外断开后的结果
测试了本地unix socket,如果服务段
关于Socket服务器关闭再运行后,客户端新连接的问题。
<em>服务器端</em>,可动态的创建多个线程,每个线程对应着一个<em>客户端</em>,每个线程又可以创建一个线程,用来接收和发送数据。 <em>客户端</em>,有一个线程,来接收数据。 接收数据的时候没有问题。但是服务器关闭后,再打开,<em>客户端</em><em>重</em>
Socket服务器端断开新打开,客户端自动完成链接
Socket通信技术。利用到了Thread技术,完成了,服务器开启,一直监听<em>客户端</em>功能,两点是,当<em>服务器端</em><em>断开</em>后<em>重</em>新打开后,<em>客户端</em>能<em>自动</em>链接到<em>服务器端</em>,由于网络原因最多延迟2分钟
linux c socket tcp客户端只能发送一次,发送第二次服务端接收不到,必须启才行
服务端循环accept,如果每次<em>客户端</em>只发送一次请求,就没问题, 但是如果<em>客户端</em>循环发送数据,服务端就接收不到一次连接中的第二次请求。 下面贴代码,求解这个问题到底咋回事 服务端 sock_serv.c #include #include #include #include #include #include #include #include #define BACKLOG 10 #define RECVBUF_SIZE 4096 #define PORT 20000 int init_server(int type){ int sockfd; if ((sockfd = socket(AF_INET, type, 0)) == -1){ printf("create socker error\n"); return -1; } struct sockaddr_in addrv4; bzero(&addrv4, sizeof(addrv4)); addrv4.sin_family = AF_INET; addrv4.sin_port = htons(PORT); addrv4.sin_addr.s_addr = INADDR_ANY; if (bind(sockfd, (struct sockaddr *)&addrv4, sizeof(addrv4)) < 0){ printf ("bind sockfd error\n"); return -1; } if (listen(sockfd, BACKLOG) < 0){ printf ("listen sockfd error\n"); return -1; } return sockfd; } int main(void){ int sockfd, newfd; if ((sockfd = init_server(SOCK_STREAM)) == -1){ printf ("server init failed\n"); exit(1); } while (1) { struct sockaddr client_addr; bzero(&client_addr, sizeof(client_addr)); socklen_t len = sizeof(client_addr); char recvbuf[RECVBUF_SIZE]; if ((newfd = accept(sockfd, &client_addr, &len)) < 0){ printf("%s\n", strerror(errno)); printf ("accept request error\n"); exit(1); } printf(" the client fd is :%d\n", newfd); printf ("client ip is %s", inet_ntoa(((struct sockaddr_in *)&client_addr)->sin_addr)); ssize_t ret; if ((ret = recv(newfd, recvbuf, RECVBUF_SIZE, 0)) < 0){ printf("%s\n", strerror(errno)); printf("recv data error \n"); exit(1); } if (ret == 0) { printf("always read to EOF\n"); } printf("the client request data is :\n\t\t%s", recvbuf); char *resp_data = "the server was recvived success!"; if (send(newfd, resp_data, strlen(resp_data), 0) == -1){ printf("response data error\n"); exit(1); } //shutdown(newfd, SHUT_RDWR); //close(newfd); if (strcmp(recvbuf, "exit") == 0){ shutdown(sockfd, SHUT_RDWR); close(sockfd); } } } ``` ``` <em>客户端</em> sock_client.c #include #include #include #include #include #include #include #define BUFSIZE 4096 #define PORT 20000 void error(const char *str){ printf("%s\n" "the error info is : %s\n", str, strerror(errno)); } int init_client(){ int sockfd; if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) == -1){ error("socket error"); return -1; } struct sockaddr_in addrv4; bzero(&addrv4, sizeof(addrv4)); addrv4.sin_family = AF_INET; addrv4.sin_port = htons(PORT); addrv4.sin_addr.s_addr = inet_addr("127.0.0.1"); if (connect(sockfd, (struct sockaddr *)&addrv4, (socklen_t) sizeof(addrv4)) == -1){ error("connect error"); return -1; } return sockfd; } int main(void){ char consolebuf[BUFSIZE]; char recvbuf[BUFSIZE]; int sockfd, len, recvlen; if ((sockfd = init_client()) == -1){ error("init client error"); exit(1); } while (1){ printf("input >>"); if ((len = read(STDIN_FILENO, &consolebuf, BUFSIZE)) == -1){ error("read data error"); exit(1); } if (strcmp(consolebuf, "exit-client") == 0){ break; } if (send(sockfd, consolebuf, len, 0) == -1){ error("send data error"); exit(1); } if ((recvlen = recv(sockfd, recvbuf, BUFSIZE, 0)) == -1){ error("receive the server response error\n"); exit(1); } write(STDOUT_FILENO, recvbuf, recvlen); } shutdown(sockfd, SHUT_RDWR); close(sockfd); exit(0); } ``` ```
用端口复用技术解决tcp连接下服务器主动关闭连接后不能立即启的问题
本例中端口复用可以让服务器中多个socket共同使用同一个端口号。 问题描述:在tcp连接下,如果服务器主动关闭连接(比如ctrl+c结束服务器进程),那么由于服务器这边会出现time_wait状态,所以不能立即<em>重</em>新启动服务器进程。 解决这个问题就可以用端口复用,让多个socket可以同时绑定在一个ip和端口上,这样,就算是上一个socket处于time_wait状态占用着该端
Java Socket: 服务器启,客户端自动
Java Socket编程:自己写了一个简单的Java Socket Server/Client应用。调试代码的时候,发现只要<em>重</em>启Server,<em>客户端</em>抛出异常,进程<em>断开</em>。 解决办法:在<em>客户端</em>另外启动一个进程,调用sendUrgentData(0xFF)方法监听是否与<em>服务器端</em>连接成功。 原来的代码:  public void run() {   String message = &quot;&quot;;    ...
TCP连问题 快速多次
各位大神好。现在我使用 lwip 1.4.1协议建立个小型服务器(大概3个设备会连上服务器(设备是手机)。<em>客户端</em>使用一个ip地址 不同的端口和服务器建立<em>TCP</em>连接(使用环境:一个连上服务器后 马上<em>断开</em>
异步TCP客户端+掉线自动
初步完成了异步<em>TCP</em><em>客户端</em>+掉线<em>自动</em><em>重</em>连,刚开始接触socket编程,对委托、回调、异步冒似还是似懂非懂,希望大家多多指导。http://u.download.csdn.net/images/btn_
在HTTP通讯过程中,是客户端还是服务端主动断开连接?
比如说:IE访问IIS,获取文件,肯定是要建立一个连接,这个连接在完成通讯后,是<em>客户端</em>Close了连接,还是服务端Close了连接。 我用程序测模拟IE和IIS,都没有收到<em>断开</em>连接的<em>消息</em>,也就是都没有
socket 断开自动
服务器 - <em>客户端</em> 之间 socket 通信,要做一个<em>断开</em><em>自动</em><em>重</em>连的功能。 服务器 -- <em>客户端</em> 通过 心跳包 检测是否<em>断开</em>, 这个没有问题。 我的问题是: 1: <em>客户端</em>程序 退出,然后再启动, 然后
客户端启,服务如何新监听?
//<em>服务器端</em> 初始化 sock = new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp); sock.Bi
TCP程序客户端连接不上服务器的解决办法
这几天突然想运行之前用Qt写的几个tcp小程序,但是发现<em>客户端</em>和服务器连接不上了,我自己又写了一遍程序,发现还是连接不上。这个问题困扰了我好几天。然后我就想看看自己用的端口号有没有被监听到。于是就运行了自己的服务器,然后在控制台下输入netstat -a发现自己用的端口号出现了两次。然后我停止运行服务器再输入netstat -a  自己写的端口只出现了一次,说明之前的8888端口号已经被占用了,所...
Tcp服务端判断客户端是否断开连接
     今天搞tcp链接弄了一天,前面创建socket,绑定,监听等主要分清自己的参数,udp还是tcp的。好不容易调通了,然后就是一个需求,当<em>客户端</em>主动<em>断开</em>连接时,服务端也要<em>断开</em>连接,这样一下次<em>客户端</em>请求链接的时候才能成功链接。       然后就开始找各种方法。其中简单的是看recv()返回为0,表明<em>断开</em>了链接,但是recv函数始终返回SOCKET_ERROR,找不到原因。。。。。。。。。...
tcpclient客户端如何知道服务端断了?
服务端一直tcplistener,有<em>客户端</em>通过tcpclient连接就保持连接,如果在连接的过程中<em>客户端</em>断了,因为服务端一直在listen,所以只要<em>客户端</em>在上线,一下子就能连接,但是如果服务端断了,客
关于网络编程中服务器出现故障的三种情况(TCP协议)
1  服务器主机崩溃     模拟操作:当<em>客户端</em>和服务器成功连接之后,拔掉服务器的网线,此时从<em>客户端</em>发送数据分节。这样同时也模拟了<em>客户端</em>发送的数据不可达服务端的情景(即建立连接后某些中间路由器不工作)。     产生后果:<em>客户端</em>会持续<em>重</em>传未收到确认的数据分节(<em>TCP</em>软件负责),持续一段时间后仍未收到确认则放弃(通常是9分钟)。如果是服务器崩溃则本机<em>TCP</em>软件会向用户进程显示套接字错误并置错误码
如果服务端启,那么客户端的长连接会怎么样
这里记录一次服务端<em>重</em>启时,使用winshark的抓包过程; 场景是:SDK 建立对 服务端的长连接,<em>客户端</em>连接策略是: 失活判断: 一条连接 180s都没有read到数据; 保活判断: 每秒检查一次,连续60次检查都为空闲,那么发送一次keeplive包。 <em>重</em>连逻辑: 如果连接<em>断开</em>,那么会以2s 、 4s、  6s、  8s...这样的递增产生的时延,去<em>重</em>连,每次连接等待5s判断连接超
怎样实现断线连和意外消息判断
1:一个服务端,一个<em>客户端</em>,服务端会保存一个已连接的<em>客户端</em>的session,当<em>客户端</em>意外断掉,并且再某个时间内<em>重</em>新连接后,可不可以让这个<em>客户端</em><em>重</em>新连接并且仍然使用这个session,怎样连接呢? 2:
状态同步模式下的游戏掉线
LuaServer服务器开发之状态同步模型下的游戏掉线<em>重</em>连
断线连 心跳
using System.Collections;using System.Collections.Generic;using UnityEngine;using System.Net;using System.Net.Sockets;using UnityEngine.UI;using System;using System.Text;[XLua.LuaCallCSharp]public cla...
TCP IP 断开之后的
我的<em>客户端</em>应用程序使用<em>TCP</em>/IP连接到服务器。如果应用程序失去与此服务器的连接(例如,由于服务器崩溃或手动关闭了服务器),我希望它会定时尝试<em>重</em>新连接,直到成功为止。 大概就是 每隔几秒去<em>重</em>连一次服务
tcp连接检测及
mina
Java学习的正确打开方式
在博主认为,对于入门级学习java的最佳学习方法莫过于视频+博客+书籍+总结,前三者博主将淋漓尽致地挥毫于这篇博客文章中,至于总结在于个人,实际上越到后面你会发现学习的最好方式就是阅读参考官方文档其次就是国内的书籍,博客次之,这又是一个层次了,这里暂时不提后面再谈。博主将为各位入门java保驾护航,各位只管冲鸭!!!上天是公平的,只要不辜负时间,时间自然不会辜负你。 何谓学习?博主所理解的学习,它是一个过程,是一个不断累积、不断沉淀、不断总结、善于传达自己的个人见解以及乐于分享的过程。
程序员必须掌握的核心算法有哪些?
由于我之前一直强调数据结构以及算法学习的<em>重</em>要性,所以就有一些读者经常问我,数据结构与算法应该要学习到哪个程度呢?,说实话,这个问题我不知道要怎么回答你,主要取决于你想学习到哪些程度,不过针对这个问题,我稍微总结一下我学过的算法知识点,以及我觉得值得学习的算法。这些算法与数据结构的学习大多数是零散的,并没有一本把他们全部覆盖的书籍。下面是我觉得值得学习的一些算法以及数据结构,当然,我也会整理一些看过...
前端 | 2. 正则
转载请注明以下: 本文转自清自以敬的博客:https://blog.csdn.net/qq_45791147 文章目录1.转义2.正则表达式初步2.1.匹配字符2.1.1.组成元素2.1.2.基础正则的设计 1.转义 转义的作用: 当某个字符在表达式中具有特殊含义,例如字符串引号中出现了引号,为了可以使用这些字符本身,而不是使用其在表达式中的特殊含义,则需要通过转义符“\”来构建该字符转义...
有哪些让程序员受益终生的建议
从业五年多,辗转两个大厂,出过书,创过业,从技术小白成长为基层管理,联合几个业内大牛回答下这个问题,希望能帮到大家,记得帮我点赞哦。 敲黑板!!!读了这篇文章,你将知道如何才能进大厂,如何实现财务自由,如何在工作中游刃有余,这篇文章很长,但绝对是精品,记得帮我点赞哦!!!! 一腔肺腑之言,能看进去多少,就看你自己了!!! 目录: 在校生篇: 为什么要尽量进大厂? 如何选择语言及方...
大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了
大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、电子书搜索 对于大部分程序员...
linux系列之常用运维命令整理笔录
本博客记录工作中需要的linux运维命令,大学时候开始接触linux,会一些基本操作,可是都没有整理起来,加上是做开发,不做运维,有些命令忘记了,所以现在整理成博客,当然vi,文件操作等就不介绍了,慢慢积累一些其它拓展的命令,博客不定时更新 free -m 其中:m表示兆,也可以用g,注意都要小写 Men:表示物理内存统计 total:表示物理内存总数(total=used+free) use...
比特币原理详解
一、什么是比特币 比特币是一种电子货币,是一种基于密码学的货币,在2008年11月1日由中本聪发表比特币白皮书,文中提出了一种去中心化的电子记账系统,我们平时的电子现金是银行来记账,因为银行的背后是国家信用。去中心化电子记账系统是参与者共同记账。比特币可以防止主权危机、信用风险。其好处不多做赘述,这一层面介绍的文章很多,本文主要从更深层的技术原理角度进行介绍。 二、问题引入 假设现有4个人...
程序员接私活怎样防止做完了不给钱?
首先跟大家说明一点,我们做 IT 类的外包开发,是非标品开发,所以很有可能在开发过程中会有这样那样的需求修改,而这种需求修改很容易造成扯皮,进而影响到费用支付,甚至出现做完了项目收不到钱的情况。 那么,怎么保证自己的薪酬安全呢? 我们在开工前,一定要做好一些证据方面的准备(也就是“讨薪”的理论依据),这其中最<em>重</em>要的就是需求文档和验收标准。一定要让需求方提供这两个文档资料作为开发的基础。之后开发...
网页实现一个简单的音乐播放器(大佬别看。(⊙﹏⊙))
今天闲着无事,就想写点东西。然后听了下歌,就打算写个播放器。 于是乎用h5 audio的加上js简单的播放器完工了。 演示地点演示 html代码如下` music 这个年纪 七月的风 音乐 ` 然后就是css`*{ margin: 0; padding: 0; text-decoration: none; list-...
Python十大装B语法
Python 是一种代表简单思想的语言,其语法相对简单,很容易上手。不过,如果就此小视 Python 语法的精妙和深邃,那就大错特错了。本文精心筛选了最能展现 Python 语法之精妙的十个知识点,并附上详细的实例代码。如能在实战中融会贯通、灵活使用,必将使代码更为精炼、高效,同时也会极大提升代码B格,使之看上去更老练,读起来更优雅。
数据库优化 - SQL优化
以实际SQL入手,带你一步一步走上SQL优化之路!
2019年11月中国大陆编程语言排行榜
2019年11月2日,我统计了某招聘网站,获得有效程序员招聘数据9万条。针对招聘信息,提取编程语言关键字,并统计如下: 编程语言比例 rank pl_ percentage 1 java 33.62% 2 cpp 16.42% 3 c_sharp 12.82% 4 javascript 12.31% 5 python 7.93% 6 go 7.25% 7 p...
通俗易懂地给女朋友讲:线程池的内部原理
餐盘在灯光的照耀下格外晶莹洁白,女朋友拿起红酒杯轻轻地抿了一小口,对我说:“经常听你说线程池,到底线程池到底是个什么原理?”
《奇巧淫技》系列-python!!每天早上八点自动发送天气预报邮件到QQ邮箱
将代码部署服务器,每日早上定时获取到天气数据,并发送到邮箱。 也可以说是一个小型人工智障。 知识可以运用在不同地方,不一定非是天气预报。
经典算法(5)杨辉三角
杨辉三角 是经典算法,这篇博客对它的算法思想进行了讲解,并有完整的代码实现。
腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹?
昨天,有网友私信我,说去阿里面试,彻底的被打击到了。问了为什么网上大量使用ThreadLocal的源码都会加上private static?他被难住了,因为他从来都没有考虑过这个问题。无独有偶,今天笔者又发现有网友吐槽了一道腾讯的面试题,我们一起来看看。 腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹? 在互联网职场论坛,一名程序员发帖求助到。二面腾讯,其中一个算法题:64匹...
面试官:你连RESTful都不知道我怎么敢要你?
干货,2019 RESTful最贱实践
Docker 从入门到掉坑
Docker 介绍 简单的对docker进行介绍,可以把它理解为一个应用程序执行的容器。但是docker本身和虚拟机还是有较为明显的出入的。我大致归纳了一下,可以总结为以下几点: docker自身也有着很多的优点,关于它的优点,可以总结为以下几项: 安装docker 从 2017 年 3 月开始 docker 在原来的基础上分为两个分支版本: Docker CE 和 Doc...
为啥国人偏爱Mybatis,而老外喜欢Hibernate/JPA呢?
关于SQL和ORM的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行了一番讨论,感触还是有一些,于是就有了今天这篇文。 声明:本文不会下关于Mybatis和JPA两个持久层框架哪个更好这样的结论。只是摆事实,讲道理,所以,请各位看官勿喷。 一、事件起因 关于Mybatis和JPA孰优孰劣的问题,争论已经很多年了。一直也没有结论,毕竟每个人的喜好和习惯是大不相同的。我也看...
白话阿里巴巴Java开发手册高级篇
不久前,阿里巴巴发布了《阿里巴巴Java开发手册》,总结了阿里巴巴内部实际项目开发过程中开发人员应该遵守的研发流程规范,这些流程规范在一定程度上能够保证最终的项目交付质量,通过在时间中总结模式,并推广给广大开发人员,来避免研发人员在实践中容易犯的错误,确保最终在大规模协作的项目中达成既定目标。 无独有偶,笔者去年在公司里负责升级和制定研发流程、设计模板、设计标准、代码标准等规范,并在实际工作中进行...
SQL-小白最佳入门sql查询一
不要偷偷的查询我的个人资料,即使你再喜欢我,也不要这样,真的不好;
项目中的if else太多了,该怎么构?
介绍 最近跟着公司的大佬开发了一款IM系统,类似QQ和微信哈,就是聊天软件。我们有一部分业务逻辑是这样的 if (msgType = "文本") { // dosomething } else if(msgType = "图片") { // doshomething } else if(msgType = "视频") { // doshomething } else { // doshom...
Nginx 原理和架构
Nginx 是一个免费的,开源的,高性能的 HTTP 服务器和反向代理,以及 IMAP / POP3 代理服务器。Nginx 以其高性能,稳定性,丰富的功能,简单的配置和低资源消耗而闻名。 Nginx 的整体架构 Nginx 里有一个 master 进程和多个 worker 进程。master 进程并不处理网络请求,主要负责调度工作进程:加载配置、启动工作进程及非停升级。worker 进程负责处...
Python 编程开发 实用经验和技巧
Python是一门很灵活的语言,也有很多实用的方法,有时候实现一个功能可以用多种方法实现,我这里总结了一些常用的方法和技巧,包括小数保留指定位小数、判断变量的数据类型、类方法@classmethod、制表符中文对齐、遍历字典、datetime.timedelta的使用等,会持续更新......
YouTube排名第一的励志英文演讲《Dream(梦想)》
Idon’t know what that dream is that you have, I don't care how disappointing it might have been as you've been working toward that dream,but that dream that you’re holding in your mind, that it’s po...
“狗屁不通文章生成器”登顶GitHub热榜,分分钟写出万字形式主义大作
一、垃圾文字生成器介绍 最近在浏览GitHub的时候,发现了这样一个骨骼清奇的雷人项目,而且热度还特别高。 项目中文名:狗屁不通文章生成器 项目英文名:BullshitGenerator 根据作者的介绍,他是偶尔需要一些中文文字用于GUI开发时测试文本渲染,因此开发了这个废话生成器。但由于生成的废话实在是太过富于哲理,所以最近已经被小伙伴们给玩坏了。 他的文风可能是这样的: 你发现,...
程序员:我终于知道post和get的区别
是一个老生常谈的话题,然而随着不断的学习,对于以前的认识有很多误区,所以还是需要不断地总结的,学而时习之,不亦说乎
《程序人生》系列-这个程序员只用了20行代码就拿了冠军
你知道的越多,你不知道的越多 点赞再看,养成习惯GitHub上已经开源https://github.com/JavaFamily,有一线大厂面试点脑图,欢迎Star和完善 前言 这一期不算《吊打面试官》系列的,所有没前言我直接开始。 絮叨 本来应该是没有这期的,看过我上期的小伙伴应该是知道的嘛,双十一比较忙嘛,要值班又要去帮忙拍摄年会的视频素材,还得搞个程序员一天的Vlog,还要写BU...
程序员把地府后台管理系统做出来了,还有3.0版本!12月7号最新消息:已在开发中有github地址
第一幕:缘起 听说阎王爷要做个生死簿后台管理系统,我们派去了一个程序员…… 996程序员做的梦: 第一场:团队招募 为了应对地府管理危机,阎王打算找“人”开发一套地府后台管理系统,于是就在地府总经办群中发了项目需求。 话说还是中国电信的信号好,地府都是满格,哈哈!!! 经常会有外行朋友问:看某网站做的不错,功能也简单,你帮忙做一下? 而这次,面对这样的需求,这个程序员...
网易云6亿用户音乐推荐算法
网易云音乐是音乐爱好者的集聚地,云音乐推荐系统致力于通过 AI 算法的落地,实现用户千人千面的个性化推荐,为用户带来不一样的听歌体验。 本次分享<em>重</em>点介绍 AI 算法在音乐推荐中的应用实践,以及在算法落地过程中遇到的挑战和解决方案。 将从如下两个部分展开: AI算法在音乐推荐中的应用 音乐场景下的 AI 思考 从 2013 年 4 月正式上线至今,网易云音乐平台持续提供着:乐屏社区、UGC...
为什么要学数据结构?
一、前言 在可视化化程序设计的今天,借助于集成开发环境可以很快地生成程序,程序设计不再是计算机专业人员的专利。很多人认为,只要掌握几种开发工具就可以成为编程高手,其实,这是一种误解。要想成为一个专业的开发人员,至少需要以下三个条件: 1) 能够熟练地选择和设计各种数据结构和算法 2) 至少要能够熟练地掌握一门程序设计语言 3) 熟知所涉及的相关应用领域的知识 其中,后两个条件比较容易实现,而第一个...
金山办公上市,雷军心愿了却!
作者 | 胡巍巍 出品 | CSDN(ID:CSDNnews) 11月17日,大周末的,雷军微博发了个<em>重</em>磅<em>消息</em>: “明天将是里程碑式的一天,金山办公终于成功在科创板挂牌上市了! 从1988年金山创办到今天,WPS走了整整31年。 从1999年以金山办公为主体准备上市算起,这一天,我们等了20年。 WPS和金山的历程,这是一个坚持梦想并最终取得胜利的励志故事。期待大家的祝福!”...
8年经验面试官详解 Java 面试秘诀
作者 |胡书敏 责编 | 刘静 出品 | CSDN(ID:CSDNnews) 本人目前在一家知名外企担任架构师,而且最近八年来,在多家外企和互联网公司担任Java技术面试官,前后累计面试了有两三百位候选人。在本文里,就将结合本人的面试经验,针对Java初学者、Java初级开发和Java开发,给出若干准备简历和准备面试的建议。 Java程序员准备和投递简历的实...
面试官如何考察你的思维方式?
1.两种思维方式在求职面试中,经常会考察这种问题:北京有多少量特斯拉汽车?某胡同口的煎饼摊一年能卖出多少个煎饼?深圳有多少个产品经理?一辆公交车里能装下多少个乒乓球?一个正常成年人有多少根头发?这类估算问题,被称为费米问题,是以科学家费米命名的。为什么面试会问这种问题呢?这类问题能把两类人清楚地区分出来。一类是具有文科思维的人,擅长赞叹和模糊想象,它主要依靠的是人的第一反应和直觉,比如小孩...
LM3S6432_DEMO_Soft下载
LM3S6432 DEMO Software 相关下载链接:[url=//download.csdn.net/download/DDF_WORK3000/3493923?utm_source=bbsseo]//download.csdn.net/download/DDF_WORK3000/3493923?utm_source=bbsseo[/url]
ArcObject DEM流向计算下载
ArcObject DEM流向计算 相关下载链接:[url=//download.csdn.net/download/xiang__jiangsu/7973307?utm_source=bbsseo]//download.csdn.net/download/xiang__jiangsu/7973307?utm_source=bbsseo[/url]
C#高级编程(第7版):Professional C# 4 and .NET 4下载
C#高级编程(第7版):Professional C# 4 and .NET 4 相关下载链接:[url=//download.csdn.net/download/readboy2012/10739721?utm_source=bbsseo]//download.csdn.net/download/readboy2012/10739721?utm_source=bbsseo[/url]
相关热词 c# 图片上传 c# gdi 占用内存 c#中遍历字典 c#控制台模拟dos c# 斜率 最小二乘法 c#进程延迟 c# mysql完整项目 c# grid 总行数 c# web浏览器插件 c# xml 生成xsd
我们是很有底线的