Socket压力测试问题,服务端Socket长连接循环接收并处理信息

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Socket压力测试问题,服务端Socket长连接循环接收并处理信息相关的知识,希望对你有一定的参考价值。

Socket压力测试问题,开启多个客户端程序循环访问服务端,服务端Socket长连接循环接收并处理信息,这时就出现了问题。
按照流程应该是客户端发送一次数据访问服务端,服务端就会做出回应返回给客户端。
可是如图红色标记处,循环访问后,服务端就会一批批的返回信息。请问各位高人,到底是哪里出了问题呢?能否贴个例子呢 帮帮忙 万分感谢!!!
多台客户端在循环不停的发数据给服务端,服务端需要收到一条消息就及时的做出处理,然后再接收消息再处理。这个怎样实现呢?能否给个简单的例子?或者重要的几行代码也好。谢谢。

参考技术A 采用多线程,服务器端每ACCEPT一个连接后,针对生成的CLIENTSOCKET创建一个线程,在每个新建的线程中完成通信交互过程,大概不会出现你说的问题了。
PS,还有一点一定要牢记,就是TCP 流式套接字只保证“有序无误”,但不能保证收发双方的次数和内容一定相同,就是说可能发100次,但是接收次数可能只有一次。
参考技术B 这个看代码才好解决的。你大概问,我也只能大概答。
如果单发1次返回2次,那是你代码问题造成重复发送。
如果多线程同步发,那返回2次或者多次时正常的。
如果多客户端多线程同步发,单客户端返回2次,确定是异常,那么也是你编码问题造成的逻辑混乱。

1,服务端接受编码逻辑混乱。
2,接收缓冲没复位。
3,客户端接受编码和发送编码不同步,发了2次,接受线程优先级低,接受的时候就2次一起接受了。
参考技术C Socket通信的原理还是比较简单的,它大致分为以下几个步骤。
服务器端的步骤如下。

(1)建立服务器端的Socket,开始侦听整个网络中的连接请求。

(2)当检测到来自客户端的连接请求时,向客户端发送收到连接请求的信息,并建立与客户端之间的连接。

(3)当完成通信后,服务器关闭与客户端的Socket连接。

客户端的步骤如下。

(1)建立客户端的Socket,确定要连接的服务器的主机名和端口。

(2)发送连接请求到服务器,并等待服务器的回馈信息。

(3)连接成功后,与服务器进行数据的交互。

(4)数据处理完毕后,关闭自身的Socket连接。

代码参考资料
http://www.quhs.com/aspnet/6578_3.html

参考资料:http://www.quhs.com/aspnet/6578_3.html

本回答被提问者采纳

socket连接和http连接的区别

http连接:http连接就是所谓的短连接,即客户端向服务器端发送一次请求,服务器端响应后连接即会断掉;
socket连接:socket连接就是所谓的长连接,理论上客户端和服务器端一旦建立起连接将不会主动断掉;但是由于各种环境因素可能会是连接断开,比如说:服务器端或客户端主机down了,网络故障,或者两者之间长时间没有数据传输,网络防火墙可能会断开该连接以释放网络资源。所以当一个socket连接中没有数据的传输,那么为了维持连接需要发送心跳消息~~具体心跳消息格式是开发者自己定义的
http://www.2cto.com/net/201609/545559.html
参考技术A 由于通常情况下Socket连接就是TCP连接,因此Socket连接一旦建立,通信双方即可开始相互发送数据内容,直到双方连接断开。但在实际网络应用中,客户端到服务器之间的通信往往需要穿越多个中间节点,例如路由器、网关、防火墙等,大部分防火墙默认会关闭长时间处于非活跃状态的连接而导致 Socket 连接断连,因此需要通过轮询告诉网络,该连接处于活跃状态。

而HTTP连接使用的是“请求—响应”的方式,不仅在请求时需要先建立连接,而且需要客户端向服务器发出请求后,服务器端才能回复数据。

很多情况下,需要服务器端主动向客户端推送数据,保持客户端与服务器数据的实时与同步。此时若双方建立的是Socket连接,服务器就可以直接将数据传送给客户端;若双方建立的是HTTP连接,则服务器需要等到客户端发送一次请求后才能将数据传回给客户端,因此,客户端定时向服务器端发送连接请求,不仅可以保持在线,同时也是在“询问”服务器是否有新的数据,如果有就将数据传给客户端。

以上是关于Socket压力测试问题,服务端Socket长连接循环接收并处理信息的主要内容,如果未能解决你的问题,请参考以下文章

socket连接和http连接的区别

java Socket 长连接后,如何获取发来的数据

Socket的长连接和短连接

Socket的长连接和短连接

c# socket多连接(如何达到10万个客户端)

Socket的长连接和短连接