黑马程序员技术交流社区

标题: C#套接字Socket问题 [打印本页]

作者: 刘秋菊    时间: 2012-8-3 23:26
标题: C#套接字Socket问题
客户端的套接字在调用Connect方法向服务器发送请求时,是不是把自己的IP地址和应用程序端口号也发送给服务器了呢?
作者: 王志波    时间: 2012-8-4 08:16
恩,差不多吧
作者: 梁健1    时间: 2012-8-4 17:41
是包含了自己的ip和port,但是具体是不是在connection中包含就不得而知了,但是肯定是有这部分信息的。
因为,服务端在接收到连接请求之后,会调用Accept()方法,对此次的连接请求新产生一个socket,而这个socket中包含了两步内容,一部分是客户端的ip和port,另一部分则是服务端自己的ip和port,可能很多人会忽视了服务端的这部分信息,认为在新产生的socket中只有客户端的ip和port,但如果是这样的话,服务端怎么区分这是哪个应用开通的端口,客户端的ip和port可以指定需要连接的客户机,那么客户机发来的信息,服务端又该怎么处理呢?没有服务端自身的ip和port,客户端发送的信息会到达服务端,但是却不知道是哪个程序需要这部分信息,所以连接套接字中两部分信息都是必不可少;
一个监听的套接字在开始的时候,就会指定监听的端口号,这就是为了给这个程序分配一个借口,所有这种的客户机都是用这个端口连接服务端的,所以,同一个应用每一次调用accept(),只是客户端的信息在变,服务端的信息不会变。这样,通过防火墙的时候,就会在指定的几个允许的端口进行连接操作,不会因为每一次连接服务端就有一个新的端口开启,导致不能通过防火墙。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2