2014-11-15 28 views
1

我想設計一個系統,其中有發送者和接收者,並且雙方都可以發送和接收數據包。我爲每個發送者和接收者使用2個數據報道,每邊都使用2個線程來處理它。數據報通道使用線程

從發送方將數據發送到接收器工作正常,但是當我收到的接收端的數據,我想回去但是發送確認,我似乎無法接受我的發送方。我的邏輯看起來是否正確?

繼承人什麼我的課看起來像一個細分:

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

我想你需要某種同步以確保您的接收器已準備好接收消息。例如,可以使用CountDownLatch

在你發件人你應該AWAIT()和接收器應該調用COUNTDOWN()閂對象上。 試試這個以確保您的Receiver已準備好在發送消息時接收消息。如果這無助於顯示發件人和收件人代碼。