【问题标题】:is it legal to create two socket connection to same port with two threads使用两个线程创建到同一个端口的两个套接字连接是否合法
【发布时间】:2014-05-30 08:04:10
【问题描述】:

在我的多线程应用程序中,可能有多个线程正在使用不同的套接字访问同一个端口的应用程序。这在编程上是否正确,就像我的情况一样,当第二个线程创建到同一个端口的套接字连接然后第一个线程状态显示为正在运行但它什么也不做。 例如。

假设有一个线程 t1。它在端口 2106 上创建一个套接字连接并开始获取数据。现在它正在获取数据并写入文件系统。与此同时,另一个线程 t2 开始。此 t2 线程在同一端口 2106 上创建到同一 ip 的套接字连接并获取数据。现在在我的情况下,线程 t2 获取数据,但线程 t1 什么也不做。

有人能说出这是为什么吗?

【问题讨论】:

  • title 中问题的答案是“是”。不过,尚不清楚这是否是您在文本中实际提出的问题。
  • 如果服务器套接字一次支持多个打开的连接,那么你可以这样做,如果服务器允许多个连接,则没有这样的限制。

标签: java multithreading sockets


【解决方案1】:

根据您的文本,2 个线程创建和维护连接到侦听端口的服务器套接字的连接套接字并不违法。

如果您从 2 个不同的选项卡打开例如 facebook.com,这就是带有选项卡的浏览器所做的。

但事实证明,您的服务器看起来像是一个迭代连接服务器,这意味着您无需创建单独的线程或进程来处理每个连接。但是所有现代 Web 服务器都是并发连接服务器,因此如果您从 2 个不同的线程创建 2 个不同的连接,它将依次由服务器端的两个不同线程处理。

【讨论】:

  • 这个。您需要确保您的服务器可以处理多个连接。
猜你喜欢
  • 2016-01-19
  • 2016-11-01
  • 1970-01-01
  • 2012-08-05
  • 1970-01-01
  • 2012-09-22
  • 2015-10-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多