2012-08-26 1 views
0

그렇기 때문에 프로그램은 연결을 받아들이고 유효성을 검사 한 다음 해당 유효성 검사 코드를 다시 보내도록 설계되었습니다. 누구나 화를 내기 전에 그것은 단순한 작은 프로젝트 일 뿐이며 지나치게 복잡한 하하가되도록 고안되지 않았습니다. 그러나 매우 이상한 이유로 함수가 걸려있다 send.setAddess (packet.getAddress); 데이터 그램 패킷을 "보내는"코드를 처리하고 해당 특정 줄에 "중단"(또는 다시 메서드에서 앞으로 진행하지 않음)을 발견 한 각 개별 코드 줄을 주석으로 처리했기 때문에이 사실을 알고 있습니다. 이견있는 사람? 우연히 나쁘게 뭔가하고있는거야? 나는 리눅스 서버에서 그것을 시험해 보았는데 나와 함께 할 일이 없도록하고 같은 일이 일어났습니다.함수가 정지됩니까? on packet.setAddress()

public static boolean authorize(String n, DatagramPacket packet) { 
    DatagramPacket send = new DatagramPacket(new byte[4096], 4096); 
    try { 
     System.out.println("in auth"); 
     String[] t1 = n.split("%@"); 
     String name = t1[1]; 
     int k = genKey(name); 
     clients.put(name, k); 
     send.setAddress(packet.getAddress()); 
     System.out.println("set add"); 
     send.setPort(packet.getPort()); 
     System.out.println("set port"); 
     send.setData(("l-succeed%@" + Integer.toString(k)).getBytes()); 
     System.out.println("set data"); 
     main.dispathcer(send); 
     System.out.println("called send"); 
     return true; 
    } catch(Exception e) { 
     send.setData("l-failed".getBytes()); 
     main.dispathcer(send); 
     return false; 
    } 
    } 

편집 : 인증 토큰이 클라이언트에 의해 수신하기 전에 6 분했다. 그래서 분명히 setAddress()는 작동하지만 너무 오래 걸립니다.

+0

당신이 말하는 행동을 보여주는 [SSCCE] (http://sscce.org)를 게시 할 수 있습니까? – oldrinb

+0

일부 유머 메이트 : P – Bjornke

+0

'DatagramPacket.getAddress'는 DNS 조회를해서는 안되지만 어쨌든'send.setSocketAddress (packet.getSocketAddress());'시도한 적이 있습니까? 이것은 IP와 포트 문제를 모두 다루어야합니다. – oldrinb

답변

0

에 전화 할 때 packet의 주소에서 DNS 확인을하는 동안 문제가 발생하기 때문에 프로세스가 중단 될 수 있습니다. InetAddress 오브젝트를 작성하기 위해서, 몇개의 DNS 호출이 작성됩니다. 이 컴퓨터에서 packet 패킷이 왔던 IP에서 DNS 역방향 조회를 수행 할 수 있습니까? /etc/hosts 파일에서이 IP에 대한 항목을 설정해보십시오.

+0

당신은 아마도 리눅스 박스와 윈도우 서버 모두에서 역 DNS 조회를 수행하는 것과 같이 리눅스에서 6 분, 윈도우에서 각각 8 분이 걸린다는 점에서이 문제는 옳을 것입니다. (다른 DNS 및 ISP 제공 업체) – Bjornke

+0

@Bjornke @Bjornke는 해당 IP에 대한 로컬 호스트 파일에 항목을 추가하여 조회가 신속하게 이루어 지도록하십시오. –

+0

하지만 서버는 동시에 여러 IP의 요청을 처리하며 하루 동안 200 개 정도의 요청을 처리하게됩니다. getAddress() 메소드에서 DNS 검색을 사용하지 못하게 할 수 있습니까? 문자열이나 바이트 형태로 IP를 가져다가 중매 DNS를 기다리지 않고 사용할 수 있다면 좋을 것입니다. – Bjornke

관련 문제