2012-09-22 3 views
1

데이터 전송에 UDP를 사용하는 클라이언트 및 서버 소프트웨어를 작성했습니다 (TCP 대역폭 제한 때문에 UDP를 사용해야합니다). localhost를 통해 실행하면 원하는대로 실행되므로 실제 서버로 서버 응용 프로그램을 옮기면 문제가 발생합니다. 디버깅 시간 후DatagramSocket을 사용할 때 포트에 연결할 수 없습니다.

이 일이 무엇 추적 :

  • 클라이언트가 DatagramSocket를 통해 DatagramPacket의를 보냅니다.
  • 서버 (컴퓨터)가 수신합니다.
  • 응용 프로그램은 절대로이를 수신하지 않고 올바른 패킷을 다시 보내지 않습니다.
  • 내 OS가 다시 ICMP 메시지를 보냅니다 : 목적지에 도달 할 수없는 (포트에 연결할 수)

클라이언트는 포트 25055과 25056-25060의 서버에서 실행되고 있습니다. Wireshark 추적에서 패킷이 올바른 포트에서 보내지는 것을 볼 수 있습니다. 나는 이미 방화벽을 비활성화하고 소프트웨어에 topuser 권한을 부여했습니다. 코드의

중요 조각 :

socket = new DatagramSocket(clientPort); 
socket = new DatagramSocket(serverPort); 

private void sendPacket() throws Exception 
{ 
packet = new DatagramPacket(data, data.length, address, serverPort); 
socket.send(packet); 
} 

private void receivePacket(int packetSize) throws Exception 
{ 
if(data == null || data.length != packetSize) 
    data = new byte[packetSize]; 
packet = new DatagramPacket(data, packetSize); 
socket.receive(packet); 
} 

사람이 왜 이런 일이의 생각을 갖고 있습니까? 어떤 생각이든 크게 평가 될 것입니다.

+0

사례에 '서버'소켓을 설정하는 방법을 명확히 해 주실 수 있습니까? – Serge

답변

2

'포트 도달 불가'는 해당 포트에서 아무것도 수신하지 못했음을 의미합니다. 어딘가에 항구가 틀렸어.

BTW 달성하고자하는 첫 번째 줄은 무엇입니까? 왜냐하면 그렇게하지 않기 때문입니다.

관련 문제