1

まず第一に、私はこれに不慣れで、正しい変数のどこかにオプションを設定するのをおそらく忘れていることを認めますが、私のグーグルは失敗し、何をすべきかわからなかったので、私は助けてください。

これはSecureChatの例に基づいています。次の場所にあります。

そして、私が行った違いは、SecureChatServerHandler だけです。より正確には、 messageRecieved ブロックで:

@Override
public void messageReceived(ChannelHandlerContext ctx, MessageEvent e) throws Exception {
    // Convert the message to a string
    String request = (String) e.getMessage();

    System.out.println("Message recieved: " + request);

    if (request.equalsIgnoreCase("clients")) {
        channels.write("We currently have: " + channels.size() + " clients");
    } else if (request.toLowerCase().equals("koko"))
        for (Channel c : channels) {
            if (c == e.getChannel())
                c.write("HELLO WORLD");
        }
    else {
        // Then send it to all channels, but the current one.
        for (Channel c : channels)
            if (c != e.getChannel())
                c.write("[" + e.getChannel().getRemoteAddress() + "] " + request + "\n");
            else
                c.write("[you] " + request + "\n");

    }

    if (request.equalsIgnoreCase("bye"))
        e.getChannel().close();
}

ブロードキャストされている通常のメッセージを送信すると、すべてが機能します。しかし、 clientskokoなどのコマンドを送信しても、もう一度 Enter キーを押して空のメッセージを送信するまで応答がありません。最初に、私は応答を返します。

 C:\Device Manager\Application Server\Examp
 les\SecureChat\SecureChatClient\bin>java -jar client.jar 127.0.0.1 8080
 UNKNOWN SERVER CERTIFICATE: CN=securechat.example.netty.gleamynode.net, OU=Contr
 ibutors, O=The Netty Project, L=Seongnam-si, ST=Kyunggi-do, C=KR
 Welcome to Electus secure chat service!
 Your session is protected by TLS_DHE_RSA_WITH_AES_128_CBC_SHA cipher suite
 You are the 1th user
 koko<ENTER>
 <PRESS ENTER AGAIN>
 HELLO WORLD[you]
 clients<ENTER>
 <AND ENTER ONCE AGAIN>
 We currently have: 1 clients[you]

私が理解できず、望んでいないのは、-Enter ボタンを 2 回押すことです。非常に非論理的なようで、いらいらさせられます。Telnet の例では、これらの問題はありませんでした。

お時間をいただきありがとうございます。

よろしく、オルドリアン。

4

1 に答える 1

1

これは、細かいことを 1 つ忘れただけで、すべてが台無しになってしまう屈辱的な時代の 1 つです。

if (request.equalsIgnoreCase("clients")) {
    channels.write("We currently have: " + channels.size() + " clients /n"); // Forgot /n here
} else if (request.toLowerCase().equals("koko"))
    for (Channel c : channels) {
        if (c == e.getChannel())
            c.write("HELLO WORLD /n"); // <- Forgot /n here as well
    }
于 2012-04-13T12:38:43.643 に答える