2016-10-31 1 views
0

동일한 DatagramSocket 객체를 사용하여 두 개의 다른 포트를 사용하여 읽고 쓸 수 있습니까? 포트 X에서 수신하고 포트 X + 1에 기록해야합니다. 현재 내가 뭘하는지 : 나중에다른 포트를 사용하는 UDP 읽기/쓰기

sock = new DatagramSocket(5000); 

byte[] buffer = new byte[DataAdapterFB1.HEADER_SIZE + DataAdapterFB1.MAX_DATA_BYTES]; 
DatagramPacket incoming = new DatagramPacket(buffer, buffer.length); 
sock.receive(incoming); 

과 :

dp = new DatagramPacket(send.getBytes(), send.getBytes().length, DataAdapterFB1.ccuAddr, 5001); 
sock.send(dp); 

나는 와이어 샤크에 송신 패킷의 출력 중 하나를 볼 수 없습니다.

sock = new DatagramSocket(); 

byte[] buffer = new byte[DataAdapterFB1.HEADER_SIZE + DataAdapterFB1.MAX_DATA_BYTES]; 
DatagramPacket incoming = new DatagramPacket(buffer, buffer.length,DataAdapterFB1.localhost, 5000); 
sock.receive(incoming); 

dp = new DatagramPacket(send.getBytes(), send.getBytes().length, DataAdapterFB1.Addr, 5001); 
sock.send(dp); 

을하지만 작동하지 않습니다

나 또한 노력했다. 나는 2 개의 datagramsocket 객체를 사용하여 작동하도록 만들 수 있었다. (읽기 하나는 선언의 포트를 바인드하고 쓰기는 그렇지 않습니다). 하지만 하나만 가지고 할 수 있는지 알고 싶습니다.

+0

소켓 리 바인드를 시도 했습니까? 수신 할 때 5000으로 바인딩해야하고 보낼 때는 5001로 바인딩해야하지만 동일한 객체를 사용할 수 있습니다. http://download.java.net/jdk7/archive/b123/docs/api/java/net/DatagramSocket.html#bind(java.net.SocketAddress) – arynaq

+0

아니요, 가능하지 않으며 요청 사항도 의심 스럽습니다. . 그것은 항구 낭비입니다. 이 이상한 디자인의 이유는 무엇입니까? – EJP

+0

@arynaq 자신의 인용문은 불가능하다는 것을 보여줍니다. – EJP

답변

0

불가능합니다. 별도의 포트를 사용하려면 2 개의 개별 객체를 사용해야합니다.

관련 문제