Qt从套接字读取数据

时间:2017-01-23 09:17:00

标签: c++ qt sockets tcp client

我尝试使用Qt 5.7实现TCP / IP客户端。目前我的代码中有这些行

_socket = new QTcpSocket();
_socket->connectToHost(hostIp,_port);
if(_socket->waitForConnected(2000)){
        qDebug() << "Connected!";
        qDebug() << _socket->peerAddress();
}
connect( _socket, SIGNAL(readyRead()),this, SLOT(readTcpData()) );


}

void eegClient::readTcpData()
{
    QByteArray data = _socket->readAll();
}

我尝试使用简单的python服务器测试此代码:

import socket
import sys

sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_address = ('localhost', 10003)
sock.bind(server_address)


sock.listen(1)

while True:
    print >> sys.stderr, 'waiting for a connection'
    (connection, client_address) = sock.accept()
    try:
        print >> sys.stderr, 'connection from', client_address
        while True:
            if 1:
                BUFFER = "a string"
                connection.sendall(BUFFER)
            else:
                print >> sys.stderr, 'no more data from', client_address
                break
    finally:

        # Clean up the connection

        connection.close()

问题是我的代码永远不会发出“readyRead&#39;信号。当我用一个简单的python客户端检查它时,它工作并读取信息,所以我不认为问题出在服务器上。另外,行qDebug()&lt;&lt; &#34;已连接!&#34 ;; qDebug()&lt;&lt; _socket-&GT; peerAddress(); 打印正确的地址,服务器获得连接。尝试写入服务器也会失败,bytesAvailable总是返回0。 我究竟做错了什么? 感谢。

0 个答案:

没有答案