gpt4 book ai didi

JAVA - 多线程服务器 - 接收和发送之间的滞后

转载 作者:行者123 更新时间:2023-12-01 04:18:19 24 4
gpt4 key购买 nike

我的多线程 UDP 服务器最多启动 100 个线程。在每个线程中,它连接到外部设备并从每个线程接收数据流。收到它后,我有一个临时窗口,我需要在其中向外部设备发送确认。

在 run() 内接收位。

byte[] receiveData = new byte[2000];
DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length);
serverSocket.receive(receivePacket);

接收后在 run() 内发送位。

DatagramPacket reply = new DatagramPacket(sendData,sendData.length,receivePacket.getAddress(),receivePacket.getPort();
serverSocket.send(reply);

当运行wireshark来分析网络流量时,我注意到我的服务器收到数据流后并没有立即发送确认包,它需要几秒钟的时间以及与其他设备的几次其他通信,直到确认包被发送到设备导致设备端超时。

在多线程环境中,服务器在发送数据包之前等待所有线程完成?

因为几乎总是从服务器发出的数据包等待作为服务器输入的数据包。

套接字具有相同的读写队列?

提前感谢您的帮助,我快疯了! :)

最佳答案

In a multithread environment the server waits for all the threads to finish before sending packets?

没有。

The socket has the same queue for reading and writing?

没有。

您必须在您忽略的线程之间进行一些同步。它甚至可能位于 receivePacket 本身中。

关于JAVA - 多线程服务器 - 接收和发送之间的滞后,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19223636/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com