【发布时间】:2012-08-14 14:20:40
【问题描述】:
我目前正在学习如何用 java 编写一个 tcp 服务器。我正在为新的每个客户端连接(多线程服务器)创建一个新线程。
客户端连接到服务器后,我想将数据从客户端发送到服务器。在服务器端,服务器处于从套接字输入流读取数据的 while 循环中。我现在想问:我应该为每个收到的数据包创建一个新线程吗?
例如,客户端发送字符串“Hello”。服务器是否应该在新线程中处理此数据包以便它可以继续读取,因为我认为如果我不创建新线程,服务器不会继续读取,并且如果客户端在“Hello”数据包之后发送另一个数据包例如“Bye”,服务器可能不会读取它,因为它可能仍在忙于处理“Hello”数据包。
要清楚,我不是在谈论 serversockets 接受方法,我是在谈论来自套接字输入流的数据。
请赐教。
【问题讨论】:
-
每次服务器从
accept()检索套接字时,它应该分配一个新线程来处理会话。每个连接到服务器的新客户端都会触发服务器从accept获取Socket。我会推荐你谷歌一些例子,例如kieser.net/linux/java_server.html.
标签: java multithreading sockets packet serversocket