ImageVerifierCode 换一换
格式:PPT , 页数:33 ,大小:164KB ,
资源ID:388679      下载积分:2000 积分
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝扫码支付 微信扫码支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【http://www.mydoc123.com/d-388679.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(第9章Socket编程.ppt)为本站会员(boatfragile160)主动上传,麦多课文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知麦多课文库(发送邮件至master@mydoc123.com或直接QQ联系客服),我们立即给予删除!

第9章Socket编程.ppt

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