2017-02-01 1 views
-3

클라이언트를 실행할 때마다 서버가 다른 포트 번호를 알려줍니다. 나는 그 포트를 0으로 설정했을 때 사용할 수있는 포트를 찾았지만, 원하는 포트 번호를 public static final int MYPORT = 5555;으로 변경하고 서버에서 매번 새로운 포트 번호를 얻음을 발견했다. Java의 udp (클라이언트, 서버) 프로그램에서 클라이언트의 포트 번호를 설정하는 방법은 무엇입니까?

가 인쇄 방법 :

System.out.printf(" using port %d\n", receivePacket.getPort()); 

DatagramSocket socket = new DatagramSocket(null); 
SocketAddress localBindPoint = new InetSocketAddress(MYPORT); socket.bind(localBindPoint); 
SocketAddress remoteBindPoint = new InetSocketAddress(args[0], Integer.valueOf(args[1])); 
+1

시도 게시 (들여 쓰기)하는 코드의 관련성 부분. – freedev

+0

코멘트가 아니라 게시물에 추가하십시오 :) – freedev

+0

편집되었습니다. 답변을 알고 있습니까? – Sam

답변

0

난 당신이 포인트를 놓친 생각이 코드 조각은 포트 5555에서 수신 :

다음 코드의 istruction packet.getPort()는 포트 번호를 반환 이 데이터 그램이 보내지거나 데이터 그램이 수신 된 원격 호스트.

int MYPORT = 5555; 
    DatagramSocket dsocket = new DatagramSocket(MYPORT); 
    byte[] buffer = new byte[2048]; 

    // Create a packet to receive data into the buffer 
    DatagramPacket packet = new DatagramPacket(buffer, buffer.length); 

    while (true) { 
    // Wait to receive a datagram 
    dsocket.receive(packet); 

    // Convert the contents to a string, and display them 
    String msg = new String(buffer, 0, packet.getLength()); 
    System.out.println(packet.getAddress().getHostName() + ": " 
     + msg); 

    // Reset the length of the packet before reusing it. 
    packet.setLength(buffer.length); 

    System.out.printf(" using port %d\n", packet.getPort()); 
    } 

나는 이중 로컬로 확인했다 :

sudo lsof -iUDP -n -P | grep 5555 
java  1606  freedev 5u IPv6 0x9ed7290ce134656f  0t0 UDP *:5555 
관련 문제