第9章Socket编程.ppt

上传人:boatfragile160 文档编号:388679 上传时间:2018-10-12 格式:PPT 页数:33 大小:164KB
下载 相关 举报
第9章Socket编程.ppt_第1页
第1页 / 共33页
第9章Socket编程.ppt_第2页
第2页 / 共33页
第9章Socket编程.ppt_第3页
第3页 / 共33页
第9章Socket编程.ppt_第4页
第4页 / 共33页
第9章Socket编程.ppt_第5页
第5页 / 共33页
亲,该文档总共33页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

1、第9章Socket编程,本章提要 客户/服务器模型 Java编写客户应用程序 Java编写服务器应用程序,本章知识要点,客户/服务器模型 TCP/IP协议族 套接字(Socket) Java编写客户应用程序 Java编写服务器应用程序,9.1 客户/服务器模型,客户/服务器模型,客户/服务器模型的主要思想是要将应用程序的数据表示与数据处理和数据存储分开。 客户方主要是向服务器发出数据处理请求。 服务器方则是对数据处理请求进行接收,然后做出相应处理。,TCP/IP协议族,国际标准化组织(ISO)制订了开放系统互连(Open Systems Interconnection)参考模型,OSI参考模型

2、,协议 协议就是约定,就是双方为了协调地做一件事情而共同遵循的规则。,TCP/IP协议族,套接字(Socket),套接字包含主机地址与服务端口号。 在Internet中,主机地址就是客户程序或服务器程序所在的主机的IP地址。 端口与则是主机彼此通信时所有的通口,客户/服务器通信模式,著名端口所对应的应用,Socket 类 Socket是支持TCP协议的基本类。 Socket类提供了一些进行流输入/输出的方法。 ServerSocket类 ServerSocket是一个用于监听客户请求的Internet服务器程序的类。 作为服务器方程序必须使用ServerSocket类。 ServerSocke

3、t实际上并不执行数据通信工作,它仅仅接收客户请求,然后为客户创建一个相对应的Socket对象。,9.2 创建服务器应用程序,案例用户注册模块之服务器端,提出问题我们要开发用户注册模块中的服务器端应用,以实现远程用户通过Applet将信息保存到中心数据中。服务器程序需要用Java来开发,以下是服务器功能:(1)服务器应能够接收远程客户机上发来的用户资料。(2)服务器应能够将用户资料保存在customer.dat文件中。(3)服务器是多线程的,能够同时满足多个客户机的访问。(4)服务器在端口2001上运行。,分析问题 确定创建服务器所要使用的类 创建服务器 确定监听机制 确定数据通信机制,设计模型

4、图,解决问题 1.创建服务器所要使用的类 2.创建服务器类 3.确定监听机制 4.确定数据通信机制 5.完成服务器程序 6.验证程序,创建服务器所要使用的类,ServerSocket类,通信过程,ServerSocket类中提供的方法列表,accept()方法 accept()方法是阻塞方式,当有连接请求过来时才执行返回。 它将创建一个新的套接字与客户套接字建立通信。 当有很多请求发往服务器时,服务器套接字(ServerSocket)将创建多个新的套接字与不同的客户进行通信。,创建服务器类,class MyServer extends Thread public MyServer()try/创

5、建ServerSocket对象,监听端口为2001serverSocket = new ServerSocket(2001);catch(IOException e)System.out.println(“server is not start”+ e);System.out.println(“Server is listening ”);this.start();/引发监听线程,确定监听机制,服务器的run()方法主要是进行监听工作。public void run()try /无限循环while(true) /调用了阻塞方式的accept()方法Socket client = serverS

6、ocket.accept();/accept()接收到客户请求返回,创建DataCommutation对象DataCommutation com = new DataCommutation(client);com.start();catch(IOException e)System.out.println(“listening is error ”+e);,确定数据通信机制,DataCommutation线程类主要是在服务器套接字建立好连接之后,负责与客户端的一切通信工作。,/ DataCommutation线程类代码Class DataCommutation extends Thread C

7、ustomer customer = null;/定义对象输入流类ObjectInputStream streamFromClient = null;Public DataCommutation(Socket inFromClient)try/将套接字对象输入流创建为对象输入流streamFromClient = new ObjectInputStream(inFromClient.getInputStream();try/从输入流读取对象customer = (Customer)streamFromClient.readObject();/捕捉异常 /捕捉异常,public void run

8、()try/创建文件输出流对象,customer.dat是存放资料的文件FileOutputStream fp = new FileOutputStream(“customer.dat”);/将文件输出流创建为对象输出流ObjectOutputStream streamOutputFile = new ObjectOutputStream(fp);/输出customer对象到文件streamOutputFile.writeObject(customer);/关闭流对象streamOutputFile.close(); fp.close();/捕捉异常 / DataCommutation线程类结

9、束,知识点,ObjectInputStream类 ObjectOutputStream类 InvalidClassException异常类 NotSerializableException异常类,单元练习 我们要开发航班资料录入模块中的服务器端应用,以实现公司工作人员将航班信息保存到中心数据中。服务器程序需要用Java来开发,以下是服务器功能: (1)服务器应能够接收前台客户机上发来的航班资料。(2)服务器应能够将航班资料保存在flightInfor.dat文件中。(3)服务器是多线程的,能够同时满足多个客户机的访问。(4)服务器在端口2001上运行。,9.3 编写客户端应用程序,案例-用户注

10、册模块之客户端,提出问题 用户注册界面已经生成,现在需要确定按钮触发处理程序。即当用户填写完注册资料后,点击确定,注册信息应该发送到远程服务器端应用程序,由服务器程序将注册信息保存。,分析问题 打包数据 将注册信息打包成一个类对象,即实现面向对象中的封装特性。 连接服务器程序 通过Socket向服务器发送连接请求 发送数据 连接一旦建立成功,马上发送注册信息给服务器。,解决问题 确定创建客户机所要使用的类 确定要提交的数据 何时向服务器提交数据,确定创建客户机所要使用的类,创建客户机的过程就是创建一Socket对象。 语法示例:Socket clientSocket = new Socket(

11、“172.16.10.1”,1001);,Socket类包含的构造函数和基本方法,打包数据,客户资料是以对象的形式发送,所以数据必须被写入到Customer对象中,然后发送给服务器。 class Customer implements java.io.Serializable String customID;String name;String sex;String age;String address;String phone;String e_mail; /网络上传输的对象必须实现java.io.Serializable接口,确定向服务器提交数据的机制,当用户点击submit按钮时,连接服

12、务器,向服务器发送数据。public void actionPerformed(ActionEvent evt) Object obj = evt.getSource();if(obj = buttonSubmit)/创建一Customer对象,将客户资料写入Customer对象 try/创建一客户套接字,连接服务器Socket toServer = new Socket(“127.0.0.1“,2001);/创建对象输出流,将数据写入套接字ObjectOutputStream streamToServer = New ObjectOutputStream(toServer.getOutput

13、Stream();streamToServer.writeObject(customer);/关闭对象输出流streamToServer.close();,单元练习我们要开发航班资料录入模块中的客户端应用,以实现公司工作人员将航班信息保存到中心数据中。航班资料录入界面已经生成,请加入事件处理代码。,小 结,包的ServerSocket类用于创建一个套接字以让服务器监听客户的请求。 ServerSocket类的accept()方法返回对客户的套接字的引用,它是Socket类的对象。 Socket类包含功能:提供对接收或发送数据给客户的客户流的引用。这由Socket类的getInputStream()和getOutputStream()方法实现。 可用ObjectInputStream类的readObject()方法读入来自串行化的对象。 可用ObjectOutputStream类的writeObject()方法写出对象类数据到流。 本章节主要介绍的是面向连接的TCP通信方式,这个也是大部分应用中涉及到的部分。大家如果想了解面向数据报的UDP通信方式,可以查阅DatagramPacket 类和DatagramSocket类。,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 教学课件 > 大学教育

copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1