2016-04-30 6 views
0

私はjavaソケットを使い慣れていません。私はクライアント/サーバを使って簡単なUDP転送を作成しようとしています。私の問題は、現在、サーバーが無限ループを実行しており、クライアントにメッセージを送信していないことです。申し訳ありませんが、私はいくつかの愚かな間違いをした場合には、感謝javaソケットデータグラムを使用したUDP双方向

サーバー:

import java.net.*; 
import java.util.*; 


class EchoServer { 

    public static void main(String args[]) throws Exception { 

    DatagramSocket socket = new DatagramSocket(54373); 
    DatagramPacket packet = new DatagramPacket(new byte[512],512); 
    String temp = "Hello client"; 
    byte[] buffer = temp.getBytes(); 

    while (true) { 
     socket.receive(packet); 
     System.out.println("Received from client"); 

     DatagramPacket packet2 = new DatagramPacket(buffer,buffer.length,InetAddress.getByName("127.0.0.1"),54373); 
     socket.send(packet2); 
    } 
    } 
} 

クライアント:

import java.net.*; 
import java.util.*; 


class EchoClient { 
    public static void main(String args[]) throws Exception { 
    DatagramSocket socket = new DatagramSocket(); 
    socket.setSoTimeout(5000); 
    byte[] buffer = "Hello Server".getBytes(); 
    DatagramPacket packet = new DatagramPacket(buffer,buffer.length,InetAddress.getByName("127.0.0.1"),54373); 
    socket.send(packet); 

    DatagramPacket packet2 = new DatagramPacket(new byte[512],512); 
    socket.receive(packet2); 
    System.out.println("Received from server"); 
    } 
} 

しかし、私のサーバーではなくpacket2

答えて

0
のオリジナルの "パケット" を送信することができます

サーバーが自分自身に送信しています。応答データグラムを構築するときに独自のポート番号を使用するのではなく、要求データグラムにすでにあるものを使用する必要があります。 IPアドレス。実際には、リクエストデータグラムはそのままエコーサーバとして送信する必要があります。別のサーバを構築する必要はありません。

プロトコルが変更された場合は、新しいデータグラムを作成するのではなく、回答を返す要求に対してsetData()メソッドを使用することです。

関連する問題