2

私は単純なUDPサーバー/クライアントプログラムを持っています。ポートを転送し、サーバーはインターネット経由でパケットを送受信しましたが、リモートマシンのクライアントはそれらを受信できないため、クライアント側でポートを転送せずにパケットを受信する方法を考えています(偶数の場合)可能)?それが不可能な場合、クライアントがインターネット経由で UDP パケットを受信できるようにするにはどうすればよいですか?

クライアント受信スレッドは次のようになります。

public void run(){
        DatagramSocket serverSocket = null;
        while(true){
            try {
                serverSocket = new DatagramSocket(7000+clientNumber+100);    
            } catch (SocketException e1) {
                // TODO Auto-generated catch block
                e1.printStackTrace();
            }
            byte[] receiveData = new byte[1024];
            DatagramPacket receiveX = new DatagramPacket(receiveData,     receiveData.length);
            try {
                serverSocket.receive(receiveX);
            } catch (IOException e) {
                System.out.println("Nepagavau paketo");
            }
            String korX = new String( receiveX.getData());
            Play.priesoX = Float.parseFloat(korX);
            serverSocket.close();

              }
4

1 に答える 1

0

クライアント側のポート転送を行う必要はありません。NAT が自動的に処理します。 http://en.wikipedia.org/wiki/Network_address_translation クライアントがさまざまな理由 (ファイアウォールなど) で到達できない場合があります。

于 2013-08-26T20:27:28.953 に答える