2017-07-31 49 views
-1

我已经开始使用Java基于套接字编写服务器,并且我有一些问题。 当我有传入的请求时,ServerSocket将Socket返回给我。然后我创建单独的线程并在那里使用这个新的套接字。 一些传入的请求后,我有一些分离的线程和一些套接字。 所有套接字使用相同的输入地址和端口。 问题 -Java服务器 - 在多线程模式下处理传入套接字

服务器如何理解他必须给哪个线程输入数据包?可以 请您提供一些关于书籍或链接的建议,我可以通过 了解服务器如何在低级别上工作?

服务器(例如Apache tomcat)如何处理传入套接字? 据我所知,服务器有一个输入包的输入队列。 这个队列会影响服务器的速度吗?我在哪里可以读到关于服务器工作的这种低级算法?

回答

0

SocketServer监听特定的主机和端口。所谓的监听套接字。只要服务器收到新的连接请求,服务器就会创建一个新的套接字并将其绑定到新的连接。

This link解释过程更深入一点。

我会看看我是否找到其他好的阅读材料。

0

Wernerson,非常感谢!良好的联系! 据我了解,我错了,因为我认为套接字只是组合目的地IP +目的地端口。但套接字是组合目的地IP,目的地端口,源IP和源端口。而且,据我所知,当客户端应用程序创建一些套接字(新的套接字(目的地IP,目的地端口)),那么所有这些套接字将具有相同的目的IP +目的地端口,也许,相同的源IP,但他们将有不同的源端口。是?

+0

套接字是连接或端点的句柄。该连接或端点具有其拥有的任何属性。监听套接字是与连接套接字不同类型的事物的句柄。 TCP连接由源IP,源端口,目标IP和目标端口标识。您的线程具有引用TCP连接的句柄。 –