是否为每个请求创建了新套接字?

时间:2014-01-05 21:08:41

标签: sockets tcp network-programming

我试图围绕网络套接字。到目前为止,我的理解是服务器创建一个绑定到特定端口的新套接字。然后它侦听此套接字以处理客户端请求。

我已阅读本教程http://docs.oracle.com/javase/tutorial/networking/sockets/definition.html,并说

  

如果一切顺利,服务器会接受连接。一旦接受,       服务器获取绑定到同一本地端口的新套接字,也具有       其远程端点设置为客户端的地址和端口。它需要       一个新的套接字,以便它可以继续监听原始套接字       连接请求,同时满足连接客户端的需求。

以下是一些我不太了解的事情

  

如果一切顺利,服务器会接受连接。

  1. 是否意味着客户端请求已成功到达侦听套接字?
  2.   

    接受后,服务器获得绑定到同一本地端口的新套接字       还将其远程端点设置为客户端的地址和端口

    1. 创建新套接字。它也绑定到同一个端口,但它不监听传入的请求。服务器处理完客户端请求后,会将响应写入此套接字,然后关闭。这是对的吗?

    2. 这是否意味着请求以某种方式从第一个套接字传递到第二个套接字?

    3.   

      它需要一个新的套接字,以便它可以继续收听原始套接字       用于连接请求的套接字,同时满足连接客户端的需求。

      1. 因此,创建了新的套接字,然后侦听传入的请求。有不同类型的插座吗?某种“听”插座和其他?

      2. 为什么服务器必须创建一个新的侦听套接字?为什么不能重复使用前一个呢?

2 个答案:

答案 0 :(得分:6)

  1. 否。这意味着传入连接到达服务器。
  2. 否。如果服务器关闭它,它将关闭。不然的。
  3. 否。这意味着传入连接会导致完全形成连接,并在服务器上创建一个套接字来表示它的服务器端端点。
  4. (a)否。创建一个新的套接字来接收请求并发送响应。 (b)是的。有被动和主动插座。被动套接字侦听连接。活动套接字发送和接收数据。
  5. 它不必创建新的侦听(被动)套接字。它必须创建一个新的活动套接字作为新连接的端点。
  6.   

    是否为每个请求创建了新套接字?

    大多数协议,例如具有keep-alive的HTTP,允许每个连接多个请求。

答案 1 :(得分:0)

1)传入连接已到达 2)套接字没有关闭 3)有服务器插座和插座。服务器socket.accept在客户端连接时返回套接字对象