-1
if (serverResponse.contains("PING ")) {
    writer.write("PONG " + serverResponse.substring(5) + "\r\n");
    writer.write("PRIVMSG " + c.getHomechannel() + " :I got pinged!\r\n");
    System.out.println("pinged");
    writer.flush( );
}

if (cmd.equalsIgnoreCase("PING")) {
    TCPRequestManager.sendWrite("PONG " + param);
    TCPRequestManager.doMsg("c.getHomechannel()", ":I got pinged!");
    TCPConnectionManager.getWriter().flush( );
}

両方とも動作しているように見え、クライアントがpingされたというメッセージを私に送信しますが、切断のために実際にpongを返すとは思いません。何か間違っていますか?

4

1 に答える 1

0

PONG メッセージに送信先を含めるべきではありませんか? serverResponse.substring(5)最初のコード ブロックの は、サーバーにpingを送信しているサーバーのサーバー名だと思います。あなたのサーバーからirc サーバーへのPONGを期待しています。

通常、トランザクションは次のようになります。a.comはirc サーバーのホスト名、b.comはそれに接続されているボットのホスト名です。

PING :a.com          (sent from a.com to b.com)
PONG b.com :a.com    (sent from b.com to a.com)

送信する内容は次のようになります (前の例を考えると):

PING :a.com          (sent from a.com to b.com)
PONG :a.com          (sent from b.com to a.com, except there's no origin)
于 2012-05-23T23:42:30.183 に答える