Qt tcp / ip服务器使用telnet,但不能使用python或netcat

时间:2013-06-17 20:51:34

标签: qt networking tcp

我有一个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')

非常感谢。

1 个答案:

答案 0 :(得分:0)

使用

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

而不是

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

从python追加“/ r / n”到你发送的字符串的结尾,一切都会正常工作!