当前位置: 代码迷 >> QT开发 >> Qtcpsocket The remote host closed the connection 有关问题
  详细解决方案

Qtcpsocket The remote host closed the connection 有关问题

热度:318   发布时间:2016-04-25 03:18:29.0
Qtcpsocket The remote host closed the connection 问题
C/S程序,tcp连接。

本来都是用winsock写的。

server端对我来说是黑盒的,
现在想把客户端改成用qt实现(qtcpsocket)。

现在的问题是,连接能够连接上,
但是下面代码
if(!SendDataToEC(&head,sizeof(HEAD)))
   {
        return buf;
   }
    socket->waitForBytesWritten();


走到红色代码行的时候就会触发error信号,提示信息是The remote host closed the connection 。

由于server端是黑盒的。我自己又用winsock写了一个简单的tcpserver端程序。
然后分别用用qt写的和winsock 写的client程序连接,发现接收到的数据结构是一模一样的,从而排除了数据上的问题。

大家觉得还有可能是什么问题?

------解决方案--------------------
我觉得 QTcpSocket 最好是都是用异步操作,不要使用 waitFor 之类的函数,如果想快点把缓冲区的数据发出去,可以调用 flush 。
bytesWritten 看 Qt 的文档和源码,都是有发送这个信号的哦。

如果你写的数据量很小,要小心系统会缓存着一直不发送,可以设置 TCP_NODELAY 的socket选项。
  相关解决方案