2014-11-15 3 views
1

나는 송신기와 수신기가 있고 양면이 패킷을 송수신 할 수있는 시스템을 설계하려고합니다. 각 송신자와 수신자에 대해 2 개의 데이터 그램 채널을 사용하고이를 처리하기 위해 각면에 2 개의 스레드를 사용하고 있습니다.데이터 그램 채널 스레드와 함께 작동

송신자에서 수신자로 데이터를 보내는 것이 좋지만 수신자 측에서 데이터를 수신하면 수신 확인을 다시 보내려하지만 송신자 측에서는 수신 할 수 없습니다. 내 논리가 맞습니까? Heres는

내 수업이 어떻게 생겼는지의 고장 :

Thread 클래스

Thread t = new Thread(new Sender()) 
Thread t1 = new Thread(new Receiver()) 
t.start() 
t1.start(); 

보낸 사람 클래스

Sender implements Runnable{ 
    //open channel 
    //connect to address 
    //send over data in run method 
} 

Sender ACK class{ 
    //open channel 
    //connect 
    //retrieve and get data received (WAITS For incoming data but data has already been sent) 
} 

수신기 클래스

Receiver implements Runnable{ 
    //open channel 
    //bind 
    //Print out data received 
     //send ack 
} 

Receiver ACK class{ 
    //open channel 
    //connect 
    //send ack method 
     //send out data 
} 

답변

0

난 당신이 필요하다고 생각 당신의 수신기가 메시지를받을 준비가되었는지를 확인하기위한 어떤 종류의 동기화. 예를 들어, 당신은 당신이 await를() 및 수신기 래치 객체에 카운트 다운()를 호출해야한다 당신이 보낸 사람에 CountDownLatch

를 사용할 수 있습니다. 수신자가 메시지를 보낼 때 메시지를받을 준비가되어 있는지 확인하십시오. 그러면 도움이되지 않으면 발신자 및 수신자 코드를 표시하십시오.

관련 문제