Qt tcp/ip服务器工作与telnet,但不是python或netcat



我有一个Qt tcp/ip服务器监听端口。我可以通过telnet与它对话,但是当我尝试使用netcat时,输入命令被截断。当我试图通过python向它发送命令时,它什么也看不到。有没有人遇到这样的问题与Qt tcp服务器?代码如下。

服务器

QTcpServer remoteControlServer;
remoteControlClient = remoteControlServer.nextPendingConnection();
connect(remoteControlClient, SIGNAL(readyRead()), this, SLOT(remoteCommandRead()));

命令解释器->这就是我怀疑的问题所在。canReadLine()不做我想要的吗?我只是发送字符串,所以我认为我应该使用面向行的协议。

 void MainWindow::remoteCommandRead()
 {
    QByteArray lineBuffer; 
    QByteArray consoleString;
    QByteArray command;
    QList<QByteArray> commandList;
    while(remoteControlClient->canReadLine())
        {
            lineBuffer = remoteControlClient->readLine();
            lineBuffer.chop(2);
            lineBuffer.simplified();
            commandList = lineBuffer.split(' ');
python客户端
import socket
remote_sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_address = ('address', port)
remote_sock.connect(server_address)
remote_sock.sendall('commandString')

多谢。

使用

trimmedLineBuffer = lineBuffer.trimmed();
commandList = trimmedLineBuffer.split(' ');

代替

lineBuffer.chop(2);
lineBuffer.simplified();

从python附加"/r/n"到你发送的字符串的末尾,一切都会正常工作!

最新更新