我尝试使用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。 我究竟做错了什么? 感谢。