Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/348.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用线程的数据报通道_Java_Multithreading_Runnable_Datagram - Fatal编程技术网

Java 使用线程的数据报通道

Java 使用线程的数据报通道,java,multithreading,runnable,datagram,Java,Multithreading,Runnable,Datagram,我试图设计一个系统,其中有一个发送方和一个接收方,双方都可以发送和接收数据包。我为每个发送方和接收方使用2个数据报通道,并在每侧使用2个读取来处理该问题 从发送方到接收方发送数据工作正常,但当我在接收方接收到数据时,我想发送回确认,但是,我似乎无法在发送方接收数据。我的逻辑正确吗 下面是我的课程的分类: 螺纹类 Thread t = new Thread(new Sender()) Thread t1 = new Thread(new Receiver()) t.start() t1.start

我试图设计一个系统,其中有一个发送方和一个接收方,双方都可以发送和接收数据包。我为每个发送方和接收方使用2个数据报通道,并在每侧使用2个读取来处理该问题

从发送方到接收方发送数据工作正常,但当我在接收方接收到数据时,我想发送回确认,但是,我似乎无法在发送方接收数据。我的逻辑正确吗

下面是我的课程的分类:

螺纹类

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
}

我认为您需要某种同步,以确保您的接收器已准备好接收消息。例如,您可以使用

在发送方中,您应该等待()并且接收方应该调用闩锁对象上的倒计时()。 尝试此操作,以确保您的接收者在发送消息时已准备好接收消息。如果这没有帮助,那么显示您的发送者和接收者代码