【问题标题】:Java server - processing of incoming sockets in multithreading mode [duplicate]Java服务器 - 在多线程模式下处理传入套接字[重复]
【发布时间】:2018-01-06 19:25:25
【问题描述】:

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

服务器如何理解他必须向哪个线程提供输入数据包?能 你请给一些我可以阅读的书籍或链接的建议 了解服务器在底层是如何工作的?

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

【问题讨论】:

    标签: java multithreading sockets server


    【解决方案1】:

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

    This link 更深入地解释了这个过程。

    如果我发现任何其他好的阅读材料,我会看看。

    【讨论】:

      【解决方案2】:

      维尔森,非常感谢!好链接! 据我了解,我错了,因为我认为套接字只是目标 ip + 目标端口的组合。但是socket是目的IP、目的端口、源IP和源端口的组合。而且,据我了解,当客户端应用程序创建一些套接字(新套接字(目标 ip,目标端口))时,所有这些套接字将具有相同的目标 ip + 目标端口,并且可能具有相同的源 ip,但它们会有不同的源端口。是的?

      【讨论】:

      • 套接字是连接或端点的句柄。该连接或端点具有它具有的任何属性。侦听套接字是与连接套接字不同类型事物的句柄。 TCP 连接由源 IP、源端口、目标 IP 和目标端口标识。您的线程具有引用 TCP 连接的句柄。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-06-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多