我从早期的SO帖子中了解到,您需要多个进程(当每个进程具有相同的IP时)才能连接到ServerSocket。这是对的吗?
那么当您在浏览器的两个不同选项卡中同时打开网站时,网络服务器如何工作? (假设选项卡在同一进程中运行)
确切地说,我正在使用ServerSocket编写MJPEG Streamer,它在浏览器实例的一个选项卡中正常工作,如果我打开另一个选项卡到同一个URL,则服务器永远不会接受传入连接。
如何实现?
答案 0 :(得分:2)
如果从不同的IP地址并行打开两个连接,您的服务器是否正常工作?如果是,您是否使用客户端的IP地址进行特殊处理?如果是,您应该考虑使用IP:客户端PORT作为标识符,而不是IP。
答案 1 :(得分:1)
那么当您在浏览器的两个不同选项卡中同时打开网站时,网络服务器如何工作? (假设选项卡在同一进程中运行)
服务器在单独的线程中提供每个请求。
while (true) {
accept a connection ;
create a thread to deal with the client ;
end while
答案 2 :(得分:0)
不,单个进程可以打开多个套接字。大多数浏览器可以/将在网站上打开多个连接以下载CSS和图形文件等资源。有几种技术可用于处理这个问题。通常使用线程,但也可以使用多路复用I / O.
它们在浏览器端有不同的端口。服务器通过IP地址和端口区分连接。服务器通常使用多个线程,多个进程,多路复用I / O或这些的组合。
浏览器应该能够处理连接到同一网站的多个标签。我经常在Firefox中为同一个站点运行多个多媒体选项卡。