1

アプリケーションに TCP メッセージング システムを実装しようとしています。

これが私のコードです。

これで、一番下の行編集にシステム名を入力して、ターゲット システムにメッセージを送信できます。最後から 2 つ目はメッセージを送信するためのものです。

クライアントがメッセージを受信すると、メッセージ ボックスがポップされます。

機能する場合もあれば、機能しない場合もあります。

システムボックスにシステムをコンマ (,) で区切って入力することで、複数のシステムにメッセージを送信するようにこのモジュールを作成しました。

ここでの主な問題は、最初の人にのみメッセージを送信でき、残りの人にはメッセージを送信できないことです。

どうすればこの問題を解決できますか。

4

2 に答える 2

1

解決策を得ました。pastbinで更新

SendData定義を更新する必要があります

def SendData(self):

    TargetSystems = self.targetSystem.text().split(',')
    Msg2Send = self.lineedit.text()

    for TargetSystem in TargetSystems:

        self.Clientsocket.connectToHost(TargetSystem, PORT)
        self.Clientsocket.waitForConnected(-1)  # This is required data to be writing
        self.request = QtCore.QByteArray()
        stream = QtCore.QDataStream(self.request, QtCore.QIODevice.WriteOnly)
        stream.setVersion(QtCore.QDataStream.Qt_4_2)
        stream.writeUInt32(0)
        stream.writeQString(Msg2Send)
        stream.device().seek(0)
        stream.writeUInt32(self.request.size() - SIZEOF_UINT32)
        self.Clientsocket.write(self.request)
        self.nextBlockSize = 0
        self.request = None
        self.Clientsocket.disconnectFromHost() # .close() is not closing the socket connection, so i changed it this
于 2012-12-28T08:30:58.927 に答える
0

いくつかのオプションを試しましたが、nmap はそのポートが開いていることを示しません。最良の解決策は、ここで会話を聞くことでした。

PyQt QTcpServer:複数のクライアントにデータを返す方法は?

サーバーを起動したときの行に問題がありました。これが正しい行です。

self.tcpServer.listen(QtNetwork.QHostAddress("0.0.0.0"), PORT)

関数 socketError は、送信されたすべてのメッセージで呼び出されています。これは宿題だと思います。

いつも pyqt で自分の超秘密のメッセージング アプリを書きたいと思っていましたが、最近は怠惰なコーダーです (PHP O_O のコーディングを余儀なくされています)。

于 2012-12-27T14:31:18.717 に答える