是包含了自己的ip和port,但是具体是不是在connection中包含就不得而知了,但是肯定是有这部分信息的。
因为,服务端在接收到连接请求之后,会调用Accept()方法,对此次的连接请求新产生一个socket,而这个socket中包含了两步内容,一部分是客户端的ip和port,另一部分则是服务端自己的ip和port,可能很多人会忽视了服务端的这部分信息,认为在新产生的socket中只有客户端的ip和port,但如果是这样的话,服务端怎么区分这是哪个应用开通的端口,客户端的ip和port可以指定需要连接的客户机,那么客户机发来的信息,服务端又该怎么处理呢?没有服务端自身的ip和port,客户端发送的信息会到达服务端,但是却不知道是哪个程序需要这部分信息,所以连接套接字中两部分信息都是必不可少;
一个监听的套接字在开始的时候,就会指定监听的端口号,这就是为了给这个程序分配一个借口,所有这种的客户机都是用这个端口连接服务端的,所以,同一个应用每一次调用accept(),只是客户端的信息在变,服务端的信息不会变。这样,通过防火墙的时候,就会在指定的几个允许的端口进行连接操作,不会因为每一次连接服务端就有一个新的端口开启,导致不能通过防火墙。 |