我们最常接触到例子是局域网络里的打印服务器所提供的打印服务:提供打印服务的计算机,我们可以说它是打印服务器;而使用打印服务器提供打印服务的另一方,我们则称作客户端。但是谁是客户端谁是伺服端也不是绝对的,例如倘若原提供服务之伺服端要使用其它机器所提供之服务,则所扮演之角色即转变为客户端。而这种关系在因特网上,就变成使用者和网站的关系了。使用者透过调制解调器等设备上网,在浏览器中输入网址,透过>你可以根据服务器收到的数据的长度来判断,如果服务器收到的数据长度是0,那么意味着你的客户端程序已经断开了连接。从tcp/ip协议栈的角度来说,就是客户端程序关闭了自己写的这一半连接,向服务器发出了一个fin。这涉及到tcp的状态迁移,关于这方面的知识,建议你看一下richard
stevens先生的《tcp/ip
详解》卷一和《unix网络编程》卷一,上面有详细的解释。
关于你的第二个问题,建议你仔细看一下自己的服务器程序代码。服务器程序首先要建立一个监听socket,当有客户端连接上来时,服务器会在一个新socket上接受客户端连接。所以并不存在“乱”的问题。关于这个问题同样推荐你看上面的两本关于网络编程的经典著作。简单来说
服务器端指response,就好比sina、163、sohu。
客户端指request,就好比你我等终端客户PC。
一般我们访问个大网站,都是我们,也就是客户端发出请求,然后对方服务器段响应,结果就是返回了页面路径给我们,我们再根据路径看到了网页。
这里说得比较简单,复杂的是传给我们的东西有很多种,但原理是一样的,一个请求,一个响应。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)