首页| 论坛| 消息

标题:tcpSocket连接后,接收慢,4个连接,同时只能有3个接收
作者:介农酥
日期:2021-01-07 13:52
内容:

我有一个程序,里面有4个tcp连接,都是作为客户端,对应的服务端都是独立的,也就是4台工控机作为服务端,连接可以很快连接,但是总会有一个在等很长时间才能接收到数据,如果关闭后,全部重新连接,可能是A接收的慢,又关闭后,连接,可能是B接收的慢,哪个接收的慢是随机的。4个好像只能同时处理3个。上面还有我之前的程序,这个程序是可以正常接收的,这个程序相对来说简洁点,所以我在想是什么阻碍他的速度,如果需要代码,我可以贴出必要的代码(全部太多,没法贴),真不知道为什么,希望谁能给你建议,调试的方向,也是可以。
补充,我后面认真观察发现,4个连接,同时只能有3个可以接收。


#1 [zy1233 01-08 09:41]
4个QTcpSocket对象在一个线程?收到消息处理花的时间太长了?
#2 [zy1233 01-08 09:42]
4个QTcpSocket对象在一个线程?收到消息处理花的时间太长了?
#3 [onlyone 01-14 14:45]
看你的描述,是1个socket监听,4个tcp客户端连接。要注意如下关键点:
1)模型是用的slect机制吗,阻塞还是异步。qt默认是使用信号曹的异步机制的。如果是异步,则自己要及时读取消息,或者干脆消息不满足则啥也不读。
2)网络封包,需要有一套格式,不能乱收,比如先收头部,头部有报文的整体长度,等全部数据长度过来,再接受,否则等第二次信号。
3)多线程的问题。看看网络是不是io很大,如果很大,则是不是有网络io阻塞问题。这样必须换带宽更大的路由器。如果是单线程处理不过来,cpu反应慢,需要考虑多线程编程。
可能的问题很多。但是我觉得,还是你编程错误导致的,或者Ip冲突等低级错误。
#4 [onlyone 01-14 14:47]
看你的描述,是1个socket监听,4个tcp客户端连接。要注意如下关键点:
1)模型是用的slect机制吗,阻塞还是异步。qt默认是使用信号曹的异步机制的。如果是异步,则自己要及时读取消息,或者干脆消息不满足则啥也不读,等满足完整报文再处理。
2)网络封包,需要有一套格式,不能乱收,比如先收头部,头部有报文的整体长度,等全部数据长度过来,再接受,否则等第二次信号。
3)多线程的问题。看看网络是不是io很大,如果很大,则是不是有网络io阻塞问题。这样必须换带宽更大的路由器。如果是单线程处理不过来,cpu反应慢,需要考虑多线程编程。
可能的问题很多。但是我觉得,还是你编程错误导致的,或者Ip冲突等低级错误。
#5 [onlyone 01-14 14:48]
看你的描述,是1个socket监听,4个tcp客户端连接。要注意如下关键点:
1)模型是用的slect机制吗,阻塞还是异步。qt默认是使用信号曹的异步机制的。如果是异步,则自己要及时读取消息,或者干脆消息不满足则啥也不读,等满足完整报文再处理。
2)网络封包,需要有一套格式,不能乱收,比如先收头部,头部有报文的整体长度,等全部数据长度过来,再接受,否则等第二次信号。
3)多线程的问题。看看网络是不是io很大,如果很大,则是不是有网络io阻塞问题。这样必须换带宽更大的路由器。如果是单线程处理不过来,cpu反应慢,需要考虑多线程编程。
可能的问题很多。但是我觉得,还是你编程错误导致的,或者Ip冲突等低级错误。

回复 发表
主题 版块