Java网络协议 TCP和客户端/服务器范型

2008-02-23 08:14:44来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折

在网络编程中(同样在其它形式的通讯中,例如数据库编程),使用套接字的应用程序也被分为两类--客户端程序和服务器程序。你可能对"客户端/服务器编程"术语比较熟悉,尽管这个术语的准确意思你不一定清楚。下面的范例就是讨论这个主题。

1、 客户端/服务器范型

客户端/服务器范型把软件分为两类--客户端程序和服务器程序。客户端软件启动一个连接并发送请求,而服务器软件监听连接并处理请求。在UDP编程环境中,没有建立实际的连接,并且UDP应用程序可以在相同的套接字上建立并接收请求。在TCP环境中,两台计算机之间建立了连接,客户端/服务器范型是相对应的。

当软件作为客户端或者服务器的时候,它严格地定义了角色以更容易适应我们所熟悉的思维模型。软件要么启动请求,要么处理请求。在两种角色之间切换使系统更加复杂。即使允许切换,在某个特定的时刻软件程序也只能是客户端,而另一个必须是服务器。如果两个同时是客户端,就没有服务器处理请求了。

客户端/服务器范型是一个重要的理论概念,它广泛用于实际应用程序中。目前也有其它的通讯模型,例如对等(peer to peer)模型,在这种模型中每一方都可以启动通讯。但是客户端/服务器概念是更加流行的选择,因为它很简单并且在多数网络编程中使用。

2、网络客户端

网络客户端启动连接,通常处理网络事务。服务器程序用于实现客户端的请求--客户端不用实现服务器的请求。尽管客户端处于控制地位,但是服务器端仍然有一些功能。客户端可以要求服务器删除本地文件系统的所有文件,但是服务器并不是必须执行这个任务的。

网络客户端使用双方都同意的通讯标准(即网络协议)与服务器对话。例如HTTP客户端使用的命令组就与邮件客户端使用的不同,而且目的也完成不同。把HTTP连接到邮件服务器,或邮件客户端连接到HTTP服务器,要么会出现一个错误消息,要么出现一个客户端不能理解的错误消息。因为这个原因,作为协议规格的一部分,必须使用某个端口号,这样客户端才能定位服务器。Web服务器通常运行在80端口上,而其它一些服务器可能运行在非标准的端口上,URL的习惯是不列出端口的,它假定使用80端口。

3、网络服务器

网络服务器的角色是绑定某个特定的端口(客户端使用它定位服务器),并且监听新的连接。尽管客户端是临时的,并且只有在用户选中的时候才运行,但是服务器程序必须不间断地运行(即使实际上没有已连接的客户端),期望某个客户端在某个时刻需要该服务。服务器程序通常作为数据自适应监视器进程引用,使用Unix用法。它持久的运行,而且一般在该服务器程序的主机启动时启动。因此服务器一直等待,直到某个客户端建立到该服务器端口的连接。有些服务器程序在某个时刻只能处理单个连接,其它一些服务器程序可以通过使用多线程同时处理多个连接。

当开始连接后,服务器就服从客户端。它等待客户端发送请求,并且"忠实地"处理它们(可是服务器可以响应错误信息,特别是当请求违反某些重要地协议规则或有安全风险的时候)。某些协议(例如HTTP/1.0)通常在每个连接中只允许一个请求,而其它一些协议(例如POP3)支持一系列请求。服务器可以通过发送响应或错误消息应答客户端的请求。学习新的网络协议(编写客户端或服务器)与学习一种新的语言相似,只是语法改变了。但是典型情况下,它的命令的数量更小,使事情更简单。服务器的行为一部分由协议决定,一部分由开发者决定(某些命令是可选的,服务器不一定支持)。

关键词:
【推荐给好友】【关闭】
最新五条评论
查看全部评论
评论总数 0 条
您的评论
用户名: 新注册) 密 码: 匿名:
·用户发表意见仅代表其个人意见,并且承担一切因发表内容引起的纠纷和责任
·本站管理人员有权在不通知用户的情况下删除不符合规定的评论信息或留做证据
·请客观的评价您所看到的资讯,提倡就事论事,杜绝漫骂和人身攻击等不文明行为

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:JSP编程入门之与各种数据库连接的实例代码

下一篇:Java基础:初学者Java语言入门精典文章