我试图围绕网络套接字。到目前为止,我的理解是服务器创建一个绑定到特定端口的新套接字。然后它侦听此套接字以处理客户端请求。
我已阅读本教程http://docs.oracle.com/javase/tutorial/networking/sockets/definition.html,并说
如果一切顺利,服务器会接受连接。一旦接受, 服务器获取绑定到同一本地端口的新套接字,也具有 其远程端点设置为客户端的地址和端口。它需要 一个新的套接字,以便它可以继续监听原始套接字 连接请求,同时满足连接客户端的需求。
以下是一些我不太了解的事情
如果一切顺利,服务器会接受连接。
接受后,服务器获得绑定到同一本地端口的新套接字 还将其远程端点设置为客户端的地址和端口
创建新套接字。它也绑定到同一个端口,但它不监听传入的请求。服务器处理完客户端请求后,会将响应写入此套接字,然后关闭。这是对的吗?
这是否意味着请求以某种方式从第一个套接字传递到第二个套接字?
它需要一个新的套接字,以便它可以继续收听原始套接字 用于连接请求的套接字,同时满足连接客户端的需求。
因此,创建了新的套接字,然后侦听传入的请求。有不同类型的插座吗?某种“听”插座和其他?
为什么服务器必须创建一个新的侦听套接字?为什么不能重复使用前一个呢?
答案 0 :(得分:6)
是否为每个请求创建了新套接字?
大多数协议,例如具有keep-alive的HTTP,允许每个连接多个请求。
答案 1 :(得分:0)
1)传入连接已到达 2)套接字没有关闭 3)有服务器插座和插座。服务器socket.accept在客户端连接时返回套接字对象