socket发送完成后马上关闭,会导致服务端根本收不到数据 [问题点数:40分,结帖人Squall001]

Bbs2
本版专家分:109
结帖率 95.15%
Bbs8
本版专家分:33662
Blank
黄花 2017年8月 .NET技术大版内专家分月排行榜第二
Bbs6
本版专家分:7429
自己写了个连接socket服务的功能,连接成功后向服务发送数据并接收数据
1、ConnectToServerByTcp 这个方法是连接<em>socket</em>服务的 // 直接上代码 public static Socket ConnectToServerByTcp(String serverIp, int serverPort, int timeOutSecond, int connectCS) { // 建立通讯连接 Socket otherSocket =...
Socket实现通信,实时接收数据以及发送数据
公司要做一个视频采集<em>socket</em>通信的项目,第三方<em>服务端</em>已经提供好了服务,让我们对接,但是目前ui还没有,所以就暂时先自己写个小demo测试一下<em>数据</em>连接。 ![22.png](https://upload-images.jianshu.io/upload_images/2904860-9f2b4eb8af7b98aa.png?imageMogr2/auto-orient/strip%7Cimage...
Linux socket 数据发送类函数实现(一)
注:本文分析基于3.10.0-693.el7内核版本,即CentOS 7.4 三次握手完成了,下面就该<em>发送</em><em>数据</em>了。<em>发送</em><em>数据</em>使用的函数有很多,比如send、sendto、sendmsg、sendmmsg,甚至还有write、wirtev等,那这些函数都是怎么将<em>数据</em><em>发送</em>的呢,下面我们就来探个究竟。 send()函数 我们看看内核实现, SYSCALL_DEFINE4(send, int, ...
客户端断开socket连接, 服务端send 向一个失效的socket 发送数据导致服务的进程退出
问题描述: 客户端断开<em>socket</em>连接, <em>服务端</em>send 向一个失效的<em>socket</em> <em>发送</em><em>数据</em>,<em>导致</em>服务的进程退出。 原因分析: 在linux下写<em>socket</em>的程序的时候,如果尝试send到一个disconnected <em>socket</em>上,就会让底层抛出一个SIGPIPE信号。 这个信号的缺省处理方法是退出进程,大多数时候这都不是我们期望的。因此我们需要重载这个信号的处理方法。 解决方法可以有两...
关于socket flush()目标端接收不到数据,close()可以接收到数据的问题
最近在写一个简单的<em>socket</em>示例时遇到一个问题,使用write.flush()目标端read接<em>收不到</em><em>数据</em>,调用close()后<em>数据</em>可正常接收。这让我很是费解,记得当初学习flush方法时,都说明这个方法是强制将缓存区内容刷新到输出流中。难道是<em>socket</em>输出流有不一样。看到网上很多人在问这个问题,解释的也是五花八门的。后来我终于找到了原因,有这样疑惑的同胞们可以参考下,出问题的不是输出的逻辑,而是
socket通讯流不关闭收不到内容
     <em>socket</em>通讯是基于tcp/ip协议的连接,该协议是基于ip和端口的,<em>socket</em><em>服务端</em>跑起来之后会一直监控<em>发送</em>到某个端口上的<em>数据</em>,但是,<em>socket</em>所传输的内容不像文件一样,文件内容结尾是有标志符的,而<em>socket</em>传输的内容没有结尾标志符,所以<em>socket</em>传输内容如果不<em>关闭</em>流,read方法和readline方法在读取完<em>数据</em>后,会处于阻塞状态,一直等待<em>数据</em>传输过来,因为流没有<em>关闭</em>,会话...
socket阻塞的解决办法,socket客户端收不到响应报文的处理
问题:java编写的<em>socket</em><em>服务端</em>,C编写的客户端,通信的时候,C接<em>收不到</em>响应报文。 原因:<em>服务端</em>使用了readLine(),一直在等待客户端报文的结束符,造成阻塞。 处理办法:用缓存替换readLine(),具体代码如下: public void run() { PrintWriter pw = null; OutputStreamWriter os = null; InputS
为什么ServerSocket接收不到客户端Socket发送的信息?
为什么ServerSocket接<em>收不到</em>客户端Socket<em>发送</em>的信息? 问题代码(由于问题来源的程序代码较多,所以这里只列出相关代码):服务器端ServerSocket处理相关代码ServerSocket server<em>socket</em>=new ServerSocket(10000);while(true){  <em>socket</em>=server<em>socket</em>.accept();  bufferedread=new
iOS端Socket连接、发送数据(一)
一、Socket的应用 IM即时通讯是通过Socket的方式实现长连接,可运用于 (1)直播聊天室、礼物 (2)微信、QQ等即时聊天 (3)游戏对话、技能等 二、SOCKET原理 套接字(<em>socket</em>)是通信的基石,是支持TCP/IP协议的网络通信的基本操作单元。它是网络通信过程中端点的抽象表示,包含进行。建立Socket连接至少需要一对套接字,其中一个运行于客户端,称为Clien...
socket 指定网口收发数据
在系统中,可能会有多片网口,工作在不同的网段,同时有不同的网关,<em>socket</em>需要绑定其中的一个网卡,进行网络的通信设置<em>socket</em>指定为eth1进行收发网络包#define INTERFAXENAME "eth1" struct ifreq interface; strncpy(interface.ifr_ifrn.ifrn_name, INTERFAXENAME, sizeof
socket数据的接收和发送
Linux下<em>数据</em>的接收和<em>发送</em> Linux 不区分套接字文件和普通文件,使用 write() 可以向套接字中写入<em>数据</em>,使用 read() 可以从套接字中读取<em>数据</em>。 前面我们说过,两台计算机之间的通信相当于两个套接字之间的通信,在服务器端用 write() 向套接字写入<em>数据</em>,客户端就能收到,然后再使用 read() 从套接字中读取出来,就完成了一次通信。 write() 的原型为: s
java socket连接以及发送和接收数据
/** * */ package <em>socket</em>Test2; import java.io.BufferedReader; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.InputStreamReader; import java.net.ServerSoc
Socket连接发送数据的一点问题
问题在使用<em>socket</em>实现客户端和<em>服务端</em>通信时,传送<em>数据</em>的一点小bug
linux socket解决客户端socket断开后, 服务器端进程退出的问题
最近做一个<em>socket</em>服务器时,发现如果强行<em>关闭</em>客户终端,server会接收到一些奇怪的信息然后非正常退出。 原因:强行<em>关闭</em>客户终端后,client进程交付给初始进程。等初始进程查询到client后将它杀掉。但是在杀掉之前,由于关掉了终端(主要是关掉了输入缓冲区),<em>导致</em>本来阻塞中的cin或scanf返回EOF,程序得以继续执行send和recv操作。服务器发现client有消息传入,但是在尝试回...
java socket-客户端接收不到服务端口消息问题原因
初步尝试了解下<em>socket</em>编程,结果被一个问题困扰了一天,回想真是失败~总结原因 1 明显的java功底太弱,对各种类的了解不彻底深入 2 解决问题的方法不够理性,系统~ 陈述问题,最简单的情况,单线程交互,问题代码如下: server:[code=&quot;java&quot;] package sl.<em>socket</em>; import java.io.BufferedReader; import...
socket客户端数据发送数据服务端收不到
在项目中,遇到一个<em>socket</em>接口,需要由我们系统封装为webservice,然后向外提供,在封装的过程中,遇到了一个问题: 根据对方提供的地址和端口,我直接通过telnet可以<em>发送</em><em>数据</em>,但是通过程序却无法<em>发送</em><em>数据</em>。我首先采用的是下面的程序: http://zhidao.baidu.com/question/388088995.html import java.io.IOExcept
Androin学习笔记四十四:android下socket编程问题:服务器关闭时,客户端发送请求的异常处理
出处:http://gundumw100.iteye.com/blog/1117694 我用<em>socket</em>分别创建了一个服务器和一个客户端。  当服务器程序运行时,客户端和服务器<em>发送</em>接收<em>数据</em>是OK的。  但是,如果服务器程序<em>关闭</em>以后,客户端仍然<em>发送</em>请求的话,会抛出一个IOException。但这个时间间隔很久,要三到四分钟才会抛出这个异常的。刚开始还以为是死机了呢!  我想在客户
Java写的TCP聊天程序,服务端收不到客户端发送数据
这个操蛋的问题居然浪费了我好几个小时,记得以前写的时候没出现这种情况的,今天写了一下<em>服务端</em>居然<em>收不到</em>客户端<em>发送</em>的消息,最后终于找到问题所在了,客户端向输出流中写<em>数据</em>时,最后面要加换行符\n,这样<em>服务端</em>才能正常接收<em>数据</em>!!!妈蛋!!!切记!!!
socket发送数据
String date = request.getParameter("date"); List l =this.getBillService().getPayData(date); StringBuffer sb=new StringBuffer(); for(int i=0;i<l.size();i++){ WtPepBillpay w =(WtPepBillpay)l.get(i);
如何让Socket Send的数据立即发送,并获得回应?
为了确保在网络故障的情况下,比如网线拔出了,程序能立即检测到网络不通。 我设想每次send 都让<em>数据</em>立即<em>发送</em>到网络上去,而不在系统<em>发送</em>缓冲区里等待。同时对方收到<em>数据</em>后立即确认。这样如果网线拔掉后<em>数据</em>将
Socket 接收和发送数据的深刻理解.
今天仔细研究了一下关于TCP/UDP接收和<em>发送</em><em>数据</em>的具体实现和下层接收<em>数据</em>的缓冲区,原理UDP从<em>数据</em>缓冲区中接收<em>数据</em>的方式和TCP从缓冲区中读取<em>数据</em>的方式是不同的,UDP接收缓冲区中也会依次保存接收到的<em>数据</em>,如果缓冲区满了则再接收的<em>数据</em>就会丢失,UDP接收<em>数据</em>和<em>发送</em><em>数据</em>的次数应该是相同的,UDP不管你每次接收的<em>数据</em>的多少,只要你接收了一次<em>数据</em>那么就相当于接收了<em>发送</em>端某次<em>发送</em>的<em>数据</em>,而不管你接收的多
socket编程入门(1---连接socket,传送数据 出现的错误)
1,<em>socket</em>通信最基本的需要两个文件,一个是<em>服务端</em>文件,另外一个是客户端文件。 2,客户端文件client.php : <em>服务端</em>文件server.php : /* +——————————- * @<em>socket</em>通信整个过程 +——————————- * @<em>socket</em>_create * @<em>socket</em>_bind * @<em>socket</em>_liste
Linux下发送与接收组播数据(socket编程)
Sender.cpp #include #include #include #include #include #include #include #include #include #define HELLO_PORT 12345 #define H
socket通信收不到服务器回复的解决方法
在<em>发送</em>给服务器的信息字符串末尾记得加上回车 换行符,如 &quot;\n&quot;
socket close方法的作用(close后 远端会得到这个信息 返回-1 也就是eof)
今天开发一个Socket通讯agent,Java 程序中启动一个ServerSocket,用来与shell脚本中"nc"命令通讯并交换<em>数据</em>.ServerSocket可以收到"nc"<em>发送</em>的<em>数据</em>,但是"nc"却接受不到<em>数据</em>..代码样例: Java代码   try {          InputStreamReader reader = new InputStreamReader(
关于socket通信时,客户端的Socket断开,服务器端是否能接收到断开信息?
在做毕设时发现了这个问题:   当客户端和<em>服务端</em>连接的过程中时   客户端主动<em>关闭</em><em>socket</em>时,可以发现<em>服务端</em>对应的<em>socket</em>还是保持着连接   对于这个情况,   byte[] buffer = new byte[128]; int limit = 0; while ((limit = bis.read(buffer)) != -1) { log.i...
socket异步连接后,关闭服务端后,客户端再发送信息出现错误
下面的代码是从网找到的,能正常运行没有问题,我有一些问题: 1、TcpListener server 这些变量都是局部的,为什么还能正常工作。 2、我如何停止监听服务。 private void AcceptCallback(IAsyncResult ar)          ...{              TcpListener server = (TcpListener)ar.Asyn
网络编程中服务器发送的消息,客户端收不到也没有反应的几点原因
在使用 PrintWriter  时出现的问题 [java] view plain copy PrintWriter out = new PrintWriter(new BufferedWriter(        new OutputStreamWriter(this.client.getOutputStream(),          "
socket 服务器向指定的客户端发消息
一.需求需求如题. 当多个客户端连接服务器时,服务器如何给指定的客户端<em>发送</em>消息.二.解决方案核心思想: 在服务器端,需保存不同客户端的<em>socket</em>列表及客户端相关信息. <em>socket</em>含有<em>发送</em>方和接收方的ip和端口号,所以通过<em>socket</em>就能向指定的客户端<em>发送</em>消息.经查阅资料,得到如下解决方案: 用户连接时,立即向服务器<em>发送</em>自己的唯一ID,服务器端将ID和对应的<em>socket</em>用map存储. 向客户端发
Socket与底层数据传输实现
揭秘<em>socket</em>       什么是<em>socket</em>?<em>socket</em>字面意思其实就是一个插口或者套接字,包含了源ip地址、源端口、目的ip地址和源端口。但是<em>socket</em>在那个位置呢 ,在TCP/IP网络的四层体系和OSI七层好像都找不到他的影子,那么下面看一张图就可以明白了。        Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。在设计模式中,Socket其实
socket数据传输过程中如何准确的接收消息
想了半天,也没想出个合适的标题,还是描述问题吧 (1)客户端向<em>服务端</em><em>发送</em>指令,期望获得回答         (2)<em>服务端</em>响应客户端请求,并返回答案 这看起来是一个非常简单的过程,比如客户端<em>发送</em>一条json格式的指令{"id":"2342"}        服务器收到消息后解析json<em>数据</em>,返回id为2342的用户的信息 {"name":"sheng","age":"29"} 很好
使用DatagramSocket发送、接收数据(Socket之UDP套接字)
http://book.51cto.com/art/201203/322540.htm 17.4.2 使用DatagramSocket<em>发送</em>、接收<em>数据</em>(1) Java使用DatagramSocket代表UDP协议的Socket,DatagramSocket本身只是码头,不维护状态,不能产生IO流,它的唯一作用就是接收和<em>发送</em><em>数据</em>报,Java使用DatagramPacket来代表<em>数据</em>报,Datagr
linux 网络编程:使用两线程实现socket同时收发数据
工作中最近有使用到<em>socket</em> 向客户端同时<em>发送</em>和接收<em>数据</em>,因为是嵌入式linux设备,且要求只能同时一个客户端连接该端口。考虑到节省系统资源,只创建了两个线程分别实现<em>服务端</em>的收发<em>数据</em>。下面直接上代码,该代码为在PC机上程序,已作详细注释。 server.c #include #include #include #include #include #include #include #incl
我使用websocket可以连接上我们的后台,但是不能发送数据和接收后台传的数据,一直在接收type:ping,这个问题哪位大佬可以帮忙解决一下
export default { data() { return { websock: null, } }, methods: { threadPoxi(){ // 实际调用的方法 ...
Mina 解决请求后直接关闭连接
javaeye帐号丢了 晕 http://lucene-group.group.javaeye.com/group/blog/699109  开场白:  Mina 是一个韩国人写的基本java NIO的一个高性能的传输框架,我们的搜索就是基本它作为一个搜索服务开放接口了。对于系统的TIME_WAIT过多,造成服务器的负载过高,这个问题我也不用多说了,这段时间发现搜索服务器上的TIME_WAIT过多,我们每天大约总处理70W左右的搜索请求,虽然不多,
关于Netty出现的那些跳不过去的坑以及Netty长连接单独获取服务端数据
其实想了很久才写这篇文章,因为网上关于Netty的例子的确太多,但当初因为Netty获取<em>数据</em>问题困扰了我将近一个月,内心饱受煎熬,先说出自己的问题所在:1.在实时通信时需要做长连接,让他开启一个持续的永不<em>关闭</em>(或者可以手动<em>关闭</em>的)通道,通道开启时,需要做一个三次握手的身份验证。 验证结束后才可以操作,在通道<em>关闭</em>之前都不需要在做二次验证。2.Netty他是一个异步的请求方式,底层采用了回调的方法,只...
为什么socket接收大数据的时候接收不完全,出现丢包?
                      为什么<em>socket</em>接收大<em>数据</em>的时候接收不完全,出现丢包? (1)TCP协议通信,接收方接收<em>数据</em>的前后次序与<em>发送</em>方一致,但<em>数据</em>包不一定一致。打个比方,<em>发送</em>方按顺序<em>发送</em>了2个<em>数据</em>包,接收可能仅接收1次就能全部收到,也可能需要收2次才能收到,也可能收3次,每次收到的<em>数据</em>大小不一定和<em>发送</em>方<em>发送</em>的<em>数据</em>包大小一样,但最终收到的总<em>数据</em>是一致的。 (2)从你的程序...
Mina和QuickServer中为什么服务器接收数据的方法不被触发
如果骚年你在客户端发消息<em>服务端</em>接收<em>数据</em>的方法不被触发,也就是Mina中的messageReceived(IoSession session, Object message)方法,和QuickServer中的handleCommand(ClientHandler handler, String command)方法没有被调用,欲哭无泪中发现要加上这一句代码: outputStream.write(
Socket收发数据浅析
作为一个套接字描述符,它拥有两个缓冲区,分别为接收<em>数据</em>缓冲和<em>发送</em><em>数据</em>缓冲区,当套接字有<em>数据</em>到达时,首先进入的就是接收<em>数据</em>缓冲区,然后应用程序从这个缓冲区中将<em>数据</em>读出来,这就是套接字recv的过程,应用程序调用send<em>发送</em><em>数据</em>实际是把<em>数据</em>拷贝到<em>发送</em><em>数据</em>缓冲区,再由系统在缓冲区的<em>数据</em><em>发送</em>出去。缓冲区的大小可以用SetSocketOpt()设定,同时操作系统对它有一个默认大小。 当套接字接受<em>数据</em>缓冲区满
利用socket连续发送与连续接收数据
刚刚学习<em>socket</em>的时候编写的程序,可以实现客户端连续向服务器<em>发送</em>三个<em>数据</em>,服务器端连续接受三个<em>数据</em>并返回给客户端处理结果
Socket层实现系列 — send()类发送函数的实现
主要内容:<em>socket</em><em>发送</em>函数的系统调用、Socket层实现。 内核版本:3.15.2 我的博客:http://blog.csdn.net/zhangskd 以下是send()、sendto()、sendmsg()和sendmmsg()的<em>发送</em>流程图,这四个函数除了在系统调用层面 上有些差别,在Socket层和TCP层的实现都是相同的。
C#使用Socket发送和接收TCP数据示例
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Net; using System.Net.Sockets; using System.Text; namespace TcpSocketA
使用Socket类接收和发送数据
网络应用分为客户端和<em>服务端</em>两部分,而Socket类是负责处理客户端通信的Java类。通过这个类可以连接到指定IP或域名的服务器上,并且可以和服务器互相<em>发送</em>和接受<em>数据</em>。在本文及后面的数篇文章中将详细讨论Socket类的使用,内容包括Socket类基础、各式各样的连接方式、get和set方法、连接过程中的超时以及<em>关闭</em>网络连接等。     在本文中,我们将讨论使用Socket类的基本步骤和方法。一
websocket客户端接未打开,服务端的消息收不到
初学web<em>socket</em> web<em>socket</em><em>发送</em>页面,接受页面都开着消息能<em>发送</em>,能接收,要是接收的页面没有开着,在<em>发送</em>消息,打开接收页面就接<em>收不到</em>了,怎么解决?
当接收端的内核缓冲区中的数据没有全部交给应用程序时, 如果接收端关闭socket(比如调用close或者进程挂掉),就会回以RST报文
在通常情况下,  调用close的时候, 会发FIN包, 但是, 如果接收端没有用recv把内核缓冲区的<em>数据</em>取完, 却执行了<em>关闭</em><em>socket</em>的操作(比如调用close或者进程挂掉), 那么这就是异常的情况, 此时接收端会回RST报文。         我们来看看, <em>服务端</em>程序为: #include #include #include #include #include #includ
Linux C TCP服务器收不到报文
TCP服务器<em>收不到</em>报文本Markdown编辑器使用[StackEdit][6]修改而来,用它写博客,将会带来全新的体验哦:问题描述 最近写了一个tcp服务器,测试发现始终<em>收不到</em>服务器报文。问题原因 进一步调试发现了问题所在,accept函数如下://if ((client_sock = accept(server_sock, (struct sockaddr *)&addr, &len)) <
socket客户端连接mina客户端,发送频率过快,导致socket客户端,丢数据
tcp 协议为可靠协议,有任何问题,都是自己业务处理逻辑的原因  开发中遇到的问题:                  1.<em>socket</em>客户端<em>发送</em><em>数据</em>过快,服务器未接收到。设置<em>发送</em>缓冲区<em>socket</em>.setSendBufferSize(1024*3);本人也不明白原理,但是这样确实得到解决                  2.mina<em>数据</em><em>发送</em>过快,<em>导致</em><em>socket</em>客户端丢<em>数据</em> 测试工...
netty搭建socket服务端,接收客户端数据,主动发送数据给客户端
以前项目中用到的netty<em>服务端</em>,现分享出来; <em>服务端</em>主动<em>发送</em><em>数据</em>给客户端端,本代码在NioServer类中维护了个map集合用来存储连接的客户端;map的key为客户端<em>发送</em>过来报文中的id(这里你也可以使用ctx.channel().id()相关业务自己实现); 1.netty版本4.1.25 &lt;!-- https://mvnrepository.com/artifact...
关于socket中途断网或网络问题
请问?<em>socket</em>的运作是如何的,如何保证全部接收或中途作废?
正常关闭QTcpsocket
myClient->disconnectFromHost(); Qt的例子里面有这段话: which will close the connection after QTcpSocket has finished writing the fortune to the network. Because QTcpSocket works asynchronously, the data will
socket通信中;服务端瞬间write3次;客户端只read了一次;如何在客户端区分这三个数据
-
解决:ServerSocket接收不到字串数据
代码↓ client: server: 启动后,server不打印日志。 解决方案:因客户端<em>发送</em>的字串没有结束符,加上结束符就好了。↓ 效果:↓
linux socket tcp server 解决客户端socket断开后, 服务器端进程退出的问题
当服务器监听并接受一个客户端链接的时候, 可以不断向客户端<em>发送</em><em>数据</em>, 这时如果客户端断开<em>socket</em>链接, 服务器继续向一个<em>关闭</em>的<em>socket</em> <em>发送</em><em>数据</em>(send, write)的时候, 系统会默认对服务器进程<em>发送</em>一个SIGPIPE信号, 这个信号的默认动作就是终止当前服务器进程. 所以为了解决客户端断开后<em>导致</em>服务器进程结束的问题, 使用如下方法忽略SIGPIPE信号. struct siga
Python下UDP的Socket编程:服务器端因客户端的非正常退出而报错?
服务器端代码 import <em>socket</em> import threading import logging import datetime logging.basicConfig(format='%(message)s', level=logging.INFO) class ChatUdpServer: def __init__(self, ip='127.0.0.1', por...
TCP 一端关闭,另一端调用send进程退出了
http://www.lxway.com/188949016.htm 在Linux下测试,然后用C++写了客户端用千万级别数量的短链接进行压力测试.  但是服务器总是莫名退出,没有core文件. 最后问题确定为, 对一个对端已经<em>关闭</em>的<em>socket</em>调用两次write, 第二次将会生成SIGPIPE信号, 该信号默认结束进程. 具体的分析可以结合TCP的"四次握手"<em>关闭</em>. TCP是全
QTcpSocket 发送和接收数据的几种方法
QTcpSocket 提供的几种接收和<em>发送</em><em>数据</em>方法: write ( const char *, qint64 ) : qint64write ( const char * ) : qint64write ( const QByteArray & ) : qint64writeData ( const char *, qint64 ) : qint64read ( char * data
请问程序退出的时候不closesocket()会有什么后果阿?
我写了一个程序,在运行的时候会随机地出现bind()失败,不知道是不是我没有close<em>socket</em>() 的缘故阿? 如果是又该怎么样close<em>socket</em>()我是在一个线程中-><em>socket</em>(),->
TCP 连接建立后 如果没有数据发送,多长时间会断开
我做了一个 <em>socket</em> 5 代理客户端代码如下 //设置代理服务器地址和端口 TcpClient client = new TcpClient(); IPEndPoint ipPoint = new
java socket 通讯中维持长连接的同时不定时发送信息怎样实现
需求是这样的,我作为客户端向<em>服务端</em>不定时<em>发送</em>信息,需要保持长连接,我知道长连接是用心跳包的形式,问题是我怎么样在这个心跳包<em>发送</em>过程中加入我的请求信息。另外我这是一个web项目,我把这个心跳的形式放在了
一个长连接(socket),怎么实现在一定时间内没有数据传输就自动关闭连接
先说下长短连接的概念: 长连接:所谓长连接,指在一个连接上可以连续<em>发送</em>多个<em>数据</em>包,在连接保持期间,如果没有<em>数据</em>包<em>发送</em>,需要双方发链路检测包 短连接:短连接是指通讯双方有<em>数据</em>交互时,就建立一个连接,<em>数据</em>
TCP通信过程详解以及tcp长连接和短连接
TCP三次握手,4次挥手,tcp的十种状态,2msl以及短连接和长连接
客户端能接受到服务端的消息,但是发不出去,是为啥?
//<em>服务端</em>import java.io.BufferedReader;import java.io.DataOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.io.OutputStream;import java.net.Se...
Socket服务端,长连接,心跳包,自动释放掉线资源,可扩展处理数据接口
头文: 最近看网上写Sokect编程,好多都写的没法扩展,不能复用,既然是面向对象,就多多少少应该有面向对象的思想,所以自己下午写了一个,没优化,有不好的地方请指出. 解析: Socket的基本原理这里就不讲了,只贴代码和解释代码,不会讲很细. 大致分为四个部分,3个部分都是一个单独的线程.1个部分为哈希表共享资源 服务模块:SocketService,用于接受客户端连接. 检测模块:...
socket遇到错误直接退出原因和解决办法
原因:<em>socket</em>遇到错误时,默认将错误信息交给系统处理,而系统的处理办法一般是直接<em>关闭</em>整个应用,所以就会出现遇到错误程序直接<em>关闭</em>,比如客户端<em>关闭</em>,服务器还在给客户端发信息,就会出现<em>发送</em>失败,<em>导致</em>服务器也直接<em>关闭</em>的现象解决办法:把错误交给自己定义的函数处理 先定义一个函数void Perr(int signum) { if(signum==SIGPIPE) { fpri
superSocket不能接收数据的原因之一
在用 网络调试助手 或其它工具软件 向 super<em>socket</em><em>发送</em>字符串时,                在字符串的结尾一定要加上回车换行符,否则不能接收           某些采集器<em>发送</em>的字符串可能也存在这样的问题,因此           一定要加上回车换行符
HTTP协议客户端和服务器交互的三次握手、持续连接、断开连接过程
找了一系列文章,涉及到的要么只有三次握手
如何判断SOCKET已经断开
http://biancheng.dnbcw.info/linux/366100.html     最近在做一个服务器端程序,C/S结构。功能方面比较简单就是client端与server端建立连接,然后<em>发送</em>消息给server。我在server端会使用专门的线程处理一条<em>socket</em>连接。这就涉及到一个问题,如果<em>socket</em>连接断开(异常,正常)后,我如何才能感知到?server端这边是绝对被动
linux 下写socket遭遇broken pipe(SIGPIPE C++)
原代码片段如下,程序在第08行报错,但是try,,,catch无法抓到错误,经过debug分析是由于收到broken pipe的信号。看来程序此时被终止了;那么我期望不被终止,该怎么做了。 01 int sendLen = 0; 02 int totalLen = 0; 03 int packSize = pack.size(); 04 while(packSize != totalL...
关于linux服务器出现大量的Time_WAIT socket连接问题
修改linux系统/etc/sysctl.conf配置来解决这个问题: #netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}' LAST_ACK 14 SYN_RECV 348 ESTABLISHED 70 FIN_WAIT1 229 FIN_WAIT2 30 CLOSING 33 TIME...
如何判断Socket连接失效
现在都搞升级,本人也也使用JDK6进行开发。在开发工程中对Socket进行管理时对于这个连接的超时和是否失效进行研究。结果网上的资料很是让人失望,可以说google和百度下来,前几页原创很少都是抄袭。 说正经的,对于连接超时和失效肯定会想到设置超时时间和判断连接是否可用。但是设置超时时间后起作用是在调用read方法的时候,如果只是设置了超时时间却没有调用read,那么就算<em>服务端</em>中断连接,客户端...
在一个处于CLOSE_WAIT状态下的socket上send数据,对方会毫不留情地RST(对方之前已经调用close发FIN)
在四次挥手中, 被动<em>关闭</em>的一端进入CLOSE_WAIT状态, 此时, 如果还在这个<em>socket</em>上<em>发送</em><em>数据</em>, 那么主动<em>关闭</em>(这是说的是close<em>关闭</em>, 而非shundown<em>关闭</em>, 他们有区别, 我们后面再说)的一端会返回RST. 我们来看看: <em>服务端</em>程序为:
TCP socket异常关闭总结
游戏测试过程中发现某些<em>socket</em>错误经常出现,以下是测试游戏服务器时通常考虑的case. 服务器端: 1. Case:客户端程序正常运行的情况下,拔掉网线,杀掉客户端程序 目的:模拟客户端死机、系统突然重启、网线松动或网络不通等情况 结论:这种情况下服务器程序没有检测到任何异常,并最后等待“超时”才断开TCP连接 2. Case:客户端程序<em>发送</em>很多<em>数据</em>包后正常<em>关闭</em>Socket并ex
Netty网络处理之客户端主动关闭
TCP状态变化  应用层及时<em>关闭</em>连接:ESTABLISHED –> CLOSE_WAIT –> LAST_ACK –> CLOSED;   应用层未在指定时间内<em>关闭</em>连接:ESTABLISHED –> CLOSE_WAIT –> CLOSED; Netty处理过程  TCP状态进入CLOSE_WAIT时会产生OP_READ事件通知应用层,Netty从<em>socket</em>读取<em>数据</em>时返回-1,close被设为
java服务器端和C客户端基于socket通信IO阻塞问题
做的项目中涉及到抓拍,算法是C 写的,Java写的应用层。用<em>socket</em>进行通信,C写的客户端,Java写服务器,传图片文件时,Java服务器,接受时,遇到IO 阻塞问题。java Server具体代码如下: package finaly; import java.io.BufferedInputStream; import java.io.BufferedOutputStream;
关闭客户端令服务器端报错的解决
<em>关闭</em>客户端令服务器端报错的解决 一、问题描述:      多个客户端能访问一个服务器,能实现群聊。但是,当<em>关闭</em>一个客户端时,服务器会报错。报错为connect reset,后面则显示出错的位置。   二、解决方法:       提示 : 重点关注橘红色和注释部分 // 接收消息的方法 public String receive() {  sb.delete(0, sb.lengt...
如何优雅地关闭一个socket
http://blog.csdn.net/afxid/article/details/698032     最近在windows编程时需要考虑到“如何优雅地<em>关闭</em>一个<em>socket</em>”,查阅了一些资料,现将查到的相关资料做个汇编,希望能对后来者有所帮助(比较懒,所以英文资料没有翻译:-)) 1. <em>关闭</em>Socket时究竟做了什么     <em>关闭</em><em>socket</em>分为主动<em>关闭</em>(Active closu
Socket的正确关闭(改良版)
TIME_WAIT状态 如果<em>服务端</em>的Socket比客户端的Socket先<em>关闭</em>,会<em>导致</em>客户端出现TIME_WAIT状态,占用系统资源。 所以,必须等客户端先<em>关闭</em>Socket后,服务器端再<em>关闭</em>Socket才能避免TIME_WAIT状态的出现。 判断客户端Socket的<em>关闭</em> 最近试验发现,当客户端Socket<em>关闭</em>时,<em>服务端</em>的Socket会接收到0字节的通知。 private int Receive(StringBuilder sb) {     int read = 0, total
socket关闭的close和shutdown区别
<em>socket</em><em>关闭</em>close和shutdown <em>socket</em><em>关闭</em>有2个close,shutdown 他们之间的区别: close-----<em>关闭</em>本进程的<em>socket</em> id,但链接还是开着的,用这个<em>socket</em> id的其它进程还能用这个链接,能读或写这个<em>socket</em> id shutdown--则破坏了<em>socket</em> 链接,读的时候可能侦探到EOF结束符,写的时候可能会收到一个SIG
有关服务端主动关闭socket带来的几个问题分析--tcp四次握手半关闭问题导致
     一、场景:nginx开启keep-alive:     问题描述:  upstream prematurely closed connection while reading response header from upstream, client: X.90.10, server: www.example.com, request: &quot;POST /web/?a=b HTTP/...
Socket服务端关闭后报错:远程服务端关闭。。。
目前客户端和<em>服务端</em>均是循环<em>发送</em>和接收命令,服务器先开启后,客户端输入命令,服务器再回传给客户端,现在遇到的问题是,在两端均循环<em>发送</em>和接收的同时,若<em>关闭</em>服务器端,出错,代码如下,帮忙分析下: 客户端<em>发送</em>
socket客户端接收信息被堵塞
是不能等于-1撒.. 他在等你那边给他写东西呢.. 你应该在服务器端结束的时候给他写个东西过去..让他知道已经结束了.. 还有什么问题HI我哈  但是read方法本身不就有告知客户端文件传送结束的功能么 当读到文件结束符的时候它会返回-1的啊 确实读文件结束就是-1... 但是你的客户端读的不是文件啊..服务器才是读文件..所以服
java socket直接访问netty服务器中数据接收不全的问题
在项目中,通过netty框架搭建的服务器。但是在Android端我想直接采用Socket与服务器通信。但是在这个过程中遇到两个问题。1.服务器接<em>收不到</em><em>数据</em>解决方法:我<em>发送</em>的形式是直接将字符串转成字节流,按照tcp协议进行<em>发送</em>的。一开始服务器能看到客户端接入了,但是就是<em>收不到</em>消息。后来在字符串的末尾加上了'\n'换行符就行了。2.服务器<em>发送</em><em>数据</em>时,客户端接收的<em>数据</em>是一串奇怪的字符串。例如:[@Bd3...
TCP链接主动关闭不发fin包奇怪行为分析
TCP链接主动<em>关闭</em>不发fin包奇怪行为分析 问题描述: 多隆同学在做网络框架的时候,发现一条tcp链接在close的时候,对端会收到econnrest,而不是正常的fin包.  通过抓包发现close系统调用的时候,我端发出rst报文, 而不是正常的fin。这个问题比较有意思,我们来演示下: $ erl Erlang R14B03 (erts-5.8.4)  [64-bit]
解决TCP通信客户端断开连接服务器自动关闭
服务器会断开主要是 客户端断开后产生了 SIGPIPE信号   在对的位置忽略掉该信号就可以了! 蓝色框体为我自己测试结果!框体左边的是查的大牛们的讲解。 哈哈!第一次写博客 还请多包涵!都不会用这玩意儿 ...... 囧...
netty为啥主动关闭客户端链接,求大牛指点
-
判断Socket 服务端是否已关闭
最近在开发中遇到一个问题,就是如何判断远端服务器是否已经断开连接,如果断开那么需要重新连接。 首先想到<em>socket</em>类的方法isClosed()、isConnected()、isInputStreamShutdown()、isOutputStreamShutdown()等,但经过试验并查看相关文档,这些方法都是本地端的状态,无法判断远端是否已经断开连接。 然后想到是否可以通过OutputStre...
socket客户端输出流已关闭,为何服务端还可以写数据
-
SOCKET数据传输用字符串加结束符
SOCKET<em>数据</em>传输用字符串加结束符比较简单,对于不同平台的客户端,也都用这种通用的方法简单一点。 服务器端影子对象类 public class ClientInfo { public IntPtr ConnId { get; set; } public string IpAddress { get; set; }
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
java socket编程服务器接收不到数据
本人在<em>socket</em>编程的时候,连接上服务器后直接<em>发送</em>一个字符串过去,但服务器始终没有接收到<em>数据</em>。查了很多资料也没有找到,后来跟同事一起讨论,才发现原来是传送的字符串并没有结束掉。以下来说以下解决的方法: 一、网上其实有很多的关于<em>socket</em>的小例子,有的甚至特别精炼——连上<em>socket</em>,发了<em>数据</em>就直接<em>关闭</em>。这种方式是可以成功传送到服务器。 二、如果想在线程中不断的接收和<em>发送</em><em>数据</em>(<em>socket</em>一直
LINUX C语言 SOCKET 服务器断开导致客户端SEND崩溃问题解决办法
#include 在客户端建立好连接的时候  WHILE循环前面 增加signal( SIGPIPE, SIG_IGN );管道破裂<em>导致</em>程序崩溃。屏蔽一下 SIGPIPE 信号就好了。
Linux系统网络编程中TCP通讯socket--send导致进程被关闭
send(sockfd, buff, sizeof(buff), 0); 在linuxTCP通讯中上述send形式是常用的设置方式,但是如果在TCP链接断开后调用该send函数,多次即会<em>导致</em>进程结束。解决方法 最简单的方式就是 send(sockfd, buff, sizeof(buff), MSG_NOSIGNAL);下面说一下原因: linux下TCP/IP <em>socket</em>套接字建立后,
怎么让客户端关闭后服务器不会报错?
标题:怎么让客户端<em>关闭</em>后服务器不会报错? 解释:当你客户端(clientSocket)连接上服务器(serverSocket)之后,服务器会创建一个clientSocket,这个clientSocket和你自己的客户端进行交互,当你<em>关闭</em>客户端时,在服务器中的clientSocket还在一直就收客户端<em>发送</em>的消息,所以会报错,因此我们在就收消息这里写一个try{} catch{}语句就可以了: ...
XBT Tracker注释修改下载
XBT Tracker注释修改,请下载! 相关下载链接:[url=//download.csdn.net/download/dongsy2008/1986315?utm_source=bbsseo]//download.csdn.net/download/dongsy2008/1986315?utm_source=bbsseo[/url]
shell编程和unix命令B下载
本书共分五部分,详细介绍了shell编程技巧,各种UNIX命令及语法,还涉及了UNIX下的文字处理以及少量的系统管理问题。本书内容全面、文字简洁流畅,适合Shell编程人员学习、参考。 相关下载链接:[url=//download.csdn.net/download/qing047836/2001329?utm_source=bbsseo]//download.csdn.net/download/qing047836/2001329?utm_source=bbsseo[/url]
ASP.NET.2.0.入门经典中文(第4版).清晰带书签(第3卷)下载
ASP.NET.2.0.入门经典中文(第4版).清晰带书签.pdf 因文件较大186MB,分5个卷上传 相关下载链接:[url=//download.csdn.net/download/Dogous/2157209?utm_source=bbsseo]//download.csdn.net/download/Dogous/2157209?utm_source=bbsseo[/url]
文章热词 设计制作学习 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 做大数据要求会机器学习吗 python服务端开发教程
我们是很有底线的