UDPを使用してクライアント/サーバーアプリケーションを作成しています。誰かが私になぜTCPの代わりにUDPを使っているのかを聞かれる前に、私はそれが割り当てのためにそのことを述べて答えるように言います。さて、質問にしてください!UDPクライアントサーバーがこれをやっている理由について混乱しています
UDPサーバーにパケットを送信するためにスレッドを生成するクライアントクラスを作成しました。メインスレッドは入ってくるパケットを待ち受けます。サーバークラスはウェルカムメッセージプッシュサービスとして機能するだけでなく、クライアントのメッセージを全員に渡す中間者としても機能します。これは私がすべてのクライアントがメッセージを送受信する方法である
Please enter your name for the server:
James
Welcome to the server James
Hi all // User james types this
James: Hi all // Outputs his message to him once - that's fine
Hi mate // Output from another user
:
は、私が最初にクライアントの出力はこのように書き、2つのクライアントを作成したとき。私は二度ここに同じメッセージを受信したが、最初のクライアント上で、私は一度だけそれを受け取るPlease enter your name for the server:
Owen
Welcome to the server Owen
Hi all // Client one (James wrote this)
Hi mate
Owen: Hi mate
Hi mate
注意:2番目のクライアントが同じことをしたときに、私は次の出力を取得します。ここに私のロジックはクライアントにメッセージを送信するためのサーバークラスである:
// Get the response
String response = new String(packet.getData());
// Test - send a message from the server to each user
if(ports.size() > 1)
{
for(int i = 0; i < ports.size(); i++)
{
System.out.println("Values in port arraylist: "+ports);
if(packet.getPort() == ports.get(i))
{
} else
{
// String toSend = names.get(i).concat(": "+response);
// System.out.println(toSend);
buf = response.getBytes();
System.out.println("Packet Receieved from Port: "+packet.getPort()+"\nPorts.get: "+ports.get(i));
// Could store all address in own arraylist for outside local host networking
int thisPort = ports.get(i);
packet = new DatagramPacket(buf, buf.length,packet.getAddress(),thisPort);
socket.send(packet);
System.out.println("Sending message to port "+ports.get(i));
}
}
System.out.println("\n");
packet = null;
}
これをテストするために私はここに何が起こっていたか確認するために、いくつかの出力ラインを追加し、これを得た:
Values in port arraylist: [61493, 61494]
Values in port arraylist: [61493, 61494]
Packet Receieved from Port: 61493
Ports.get: 61494
Sending message to port 61494
Values in port arraylist: [61493, 61494]
Packet Receieved from Port: 61494
Ports.get: 61493
Sending message to port 61493
Values in port arraylist: [61493, 61494]
Packet Receieved from Port: 61493
Ports.get: 61494
Sending message to port 61494
宿題が割り当てられている場合は、 –