1

ポートでリッスンしている 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')

どうもありがとう。

4

1 に答える 1

0

使用する

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

それ以外の

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

Python から、送信する文字列の末尾に「/r/n」を追加すると、すべて正常に動作します!

于 2013-07-24T18:15:22.797 に答える