gpt4 book ai didi

Java 服务器 : start a new thread for each received packet?

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:52:54 24 4
gpt4 key购买 nike

我目前正在学习如何用 java 编写 TCP 服务器程序。我正在为新的每个客户端连接(多线程服务器)创建一个新线程。

客户端连接到服务器后,我想从客户端向服务器发送数据。在服务器端,服务器处于 while 循环中,从套接字输入流中读取数据。我现在想问:我是否应该为每个收到的数据包创建一个新线程?

例如,客户端发送字符串“Hello”。服务器是否应该在新线程中处理此数据包以便它可以继续读取,因为我认为如果我不创建新线程,服务器不会返回读取并且如果客户端在“Hello”数据包之后发送另一个数据包例如“Bye”,服务器可能不会读取它,因为它可能仍在忙于处理“Hello”数据包。

需要明确的是,我不是在谈论服务器套接字接受方法,而是在谈论来自套接字输入流的数据。

请赐教。

最佳答案

如果您的数据包处理任务不是很重(可能不是),您不应该这样做。线程将处理消息并返回接收新消息。没有数据会丢失——如果没有人从输入流中读取数据,数据传输就保持不变(在所有缓冲区都填满之后)。只需为每个客户端保留一个线程,在大多数情况下就足够了。

关于Java 服务器 : start a new thread for each received packet?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12017575/

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