来自相同IP的ServerSocket和多个客户端

时间:2010-11-12 19:52:39

标签: java tcp

我从早期的SO帖子中了解到,您需要多个进程(当每个进程具有相同的IP时)才能连接到ServerSocket。这是对的吗?

那么当您在浏览器的两个不同选项卡中同时打开网站时,网络服务器如何工作? (假设选项卡在同一进程中运行)

确切地说,我正在使用ServerSocket编写MJPEG Streamer,它在浏览器实例的一个选项卡中正常工作,如果我打开另一个选项卡到同一个URL,则服务器永远不会接受传入连接。

如何实现?

3 个答案:

答案 0 :(得分:2)

  1. 没有
  2. 有几个原因。检查服务器代码,在连接相同IP的第二个客户端时进行调试。
  3. 如果从不同的IP地址并行打开两个连接,您的服务器是否正常工作?如果是,您是否使用客户端的IP地址进行特殊处理?如果是,您应该考虑使用IP:客户端PORT作为标识符,而不是IP。

答案 1 :(得分:1)

  

那么当您在浏览器的两个不同选项卡中同时打开网站时,网络服务器如何工作? (假设选项卡在同一进程中运行)

服务器在单独的线程中提供每个请求。

此类服务器中的基本逻辑流程如下:

while (true) {
    accept a connection ;
    create a thread to deal with the client ;
end while

Go Through Supporting Multiple Clients Section

答案 2 :(得分:0)

不,单个进程可以打开多个套接字。大多数浏览器可以/将在网站上打开多个连接以下载CSS和图形文件等资源。有几种技术可用于处理这个问题。通常使用线程,但也可以使用多路复用I / O.

它们在浏览器端有不同的端口。服务器通过IP地址和端口区分连接。服务器通常使用多个线程,多个进程,多路复用I / O或这些的组合。

浏览器应该能够处理连接到同一网站的多个标签。我经常在Firefox中为同一个站点运行多个多媒体选项卡。