- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
java网络编程精解chapter1
1.4.3 RFC简介 1.4.4 客户/服务器通信模式 客户进程向服务器进程发出要求某种服务的请求,服务器进程响应该请求。如图1-17 所示,通常,一个服务器进程会同时为多个客户进程服务,图中服务器进程B1 同时为客户进程A1、A2 和B2 提供服务。 图1-17 客户进程A1、A2和B2请求服务器进程B1的服务 1.4.4 客户/服务器通信模式 网络上有些通用的服务有着固定的端口 1.5 用Java 编写客户/服务器程序 在Java中,有三种套接字类:.Socket、.ServerSocket和DatagramSocket。其中Socket和ServerSocket类建立在TCP协议基础上,DatagramSocket 类建立在UDP协议基础上。 传输层向应用层提供了套接字Socket 接口,Socket 封装了下层的数据传输细节,应用层的程序通过Socket来建立与远程主机的连接以及进行数据传输。 图1-18 套接字可看过是通信连接两端的收发器 1.5.1 创建EchoServer 图1-19 服务器与客户利用ServerSocket 和Socket来通信 1.5.1 创建EchoServer 服务器程序通过一直监听端口,来接收客户程序的连接请求。在服务器程序中,需要先创建一个ServerSocket对象,在构造方法中指定监听的端口: ServerSocket server=new ServerSocket(8000); //监听8000端口 ServerSocket的构造方法负责在操作系统中把当前进程注册为服务器进程。服务器程序接下来调用ServerSocket 对象的accept()方法,该方法一直监听端口,等待客户的连接请求,如果接收到一个连接请求,accept()方法就会返回一个Socket 对象,这个Socket对象与客户端的Socket对象形成了一条通信线路: Socket socket=server.accept(); //等待客户的连接请求 1.5.1 创建EchoServer Socket 类提供了getInputStream()方法和getOutputStream()方法,分别返回输入流InputStream 对象和输出流OutputStream 对象。程序只需向输出流写数据,就能向对方发送数据;只需从输入流读数据,就能接收来自对方的数据。 与普通I/O流一样,Socket 的输入流和输出流也可以用过滤流来装饰。在以下代码中,先获得输出流,然后用PrintWriter 装饰它,PrintWriter 的println()方法能够写一行数据;以下代码接着获得输入流,然后用BufferedReader 装饰它,BufferedReader 的readLine()方法能够读入一行数据: OutputStream socketOut = socket.getOutputStream(); //参数true 表示每写一行,PrintWriter缓存就自动溢出,把数据写到目的地 PrintWriter pw=new PrintWriter(socketOut,true); InputStream socketIn = socket.getInputStream(); BufferedReader br=new BufferedReader(new InputStreamReader(socketIn)); 1.5.1 创建EchoServer 例程1-2 EchoServer.java import java.io.*; import .*; public class EchoServer { private int port=8000; private ServerSocket serverSocket; public EchoServer() throws IOException { serverSocket = new ServerSocket(port); System.out.println(服务器启动); } public String echo(String msg) { return echo: + msg; } private PrintWriter getWriter(Socket socket)throws IOException{ OutputStream socketOut = socket.getOutputSt
您可能关注的文档
最近下载
- 20140902--Epi-info-软件创建统计地图.pptx VIP
- 湖南文艺出版社高中音乐选修音乐鉴赏晚上的拉格.ppt VIP
- 辣椒滴灌工程设计方案模板(3篇).docx
- CCP验证记录.doc VIP
- 2024-2025(最新)人教版语文一年级上册第三单元教案汉语拼音(2024部编新教材).docx VIP
- 高教社马工程人力资源管理教学课件unit9.pptx VIP
- CJJT 202-2013 城市轨道交通结构安全保护技术规范.docx VIP
- 项目-竣工财务决算报表.doc VIP
- 2023年土地估价师考试真题卷(含答案)M1D15.docx VIP
- 2024教科版科学三年级上册 全册教学课件.pdf
文档评论(0)