- 1、本文档共61页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
一个服务器同时为多个客户服务
socket编程 客户端套接字Socket 客户/服务器模型(回顾) Socket概念 构造Socket 获取Socket的信息 关闭/半关闭Socket 设置Socket的选项 socket应用实例 客户/服务器通信模式 客户/服务器通信模式 客户/服务器通信模式 客户进程向服务器进程发出要求某种服务的请求,服务器进程响应该请求。如下图 所示,通常,一个服务器进程会同时为多个客户进程服务,图中服务器进程B1 同时为客户进程A1、A2 和B2 提供服务。 网络应用软件服务器端 C/S模式过程中服务器处于被动服务的地位。首先服务器方要先启动,并根据客户请求提供相应服务,服务器的工作过程是: (1)打开一通信通道,并告知服务器所在的主机,它愿意在某一公认的地址上(熟知知端口,如FTP为21)接收客户请求。 (2)等待客户的请求到达该端口。 网络应用软件客户端 客户方采取的是主动请求方式,其工作过程是: (1)打开一通信通道,并连接到服务器所在主机的特定监听端口。 (2)向服务器发送请求报文,等待并接收应答;继续提出请求,与服务器的会话按照应用协议进行。 (3)请求结束后,关闭通信通道并终止。 客户与服务器的特性 客户与服务器的特性 (3)能访问所需的多种服务,但在某一时刻只能与一个远程服务器进行主动通信。 (4)主动地启动与服务器的通信。 (5)在用户的计算机上运行,不需要特殊的硬件和很复杂的操作系统。 基于因特网的C/S模式的应用程序的特点 网络协议与C/S模式的关系 错综复杂的客户/服务器交互 在C/S模式中,存在着三种一个与多个的关系: (1)一个服务器同时为多个客户服务: (2)一个用户的计算机上同时运行多个连接不同服务器的客户 (3)一个服务器类的计算机同时运行多个服务器: 服务器同时为多个客户服务 Socket概念 没有Socket的通信模型 有Socket的通信模型 Socket概念 Socket概念 Socket与I/O流 一个socket可以持有两个流—输入流与输出流 Socket通信模型 Socket通信模型 Socket通信模型 构造Socket Socket的构造方法有以下几种重载形式: (1)Socket() (2)Socket(InetAddress address, int port)throws UnknownHostException,IOException (3)Socket(InetAddress address, int port, InetAddress localAddr, int localPort)throws IOException (4)Socket(String host, int port) throws UnknownHostException,IOException (5)Socket(String host, int port, InetAddress localAddr, int localPort) throws IOException 2.1.1 设定等待建立连接的超时时间 设定等待建立连接的超时时间 Socket socket=new Socket(); SocketAddress remoteAddr=new InetSocketAddress(localhost,8000); //等待建立连接的超时时间为1分钟 socket.connect(remoteAddr, 60000); 2.1.2 设定服务器的地址 Socket(InetAddress address, int port) Socket(String host, int port) InetAddress的用法如下: //返回本地主机的IP地址 InetAddress addr1=InetAddress.getLocalHost(); //返回代表的IP地址 InetAddress addr2=InetAddress.getByName(); //返回域名为的IP地址 InetAddress addr3=InetAddress.getByName(); 2.1.3 设定客户端的地址 在一个Socket对象中,既包含远程服务器的IP地址和端口信息,也包含本地客户端的IP地址和端口信息。默认情况下,客户端的IP地址来自于客户程序所在的主机,客户端的端口则由操作系统随机分配。Socket类还有两个构造方法允许显式的设置客户端的IP地址和端口: Socket(InetAddress address, int port, InetAddress localAddr, int localPort)throws IOEx
文档评论(0)