




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第9章 Java语言网络编程,黄淮学院 计算机科学系 王春华 ,目录,9.1 Java网络编程概述,9.2 URL编程,9.3 Socket编程,9.3 Socket编程,9.3.1 Socket通信的一般结构,9.3.2 TCP Socket编程,9.3.3 UDP Socket编程,9.3.1 Socket通信的一般结构,1. IP地址与InetAddress类,2. Socket通信的一般结构,复习:两台计算机如何通过网络通信?,A,B,18,0,协议,协议,端口,端口,InetAddress类的对象不能通过构造方法创建,一般是通过其静态方法获
2、取。,IP地址与InetAddress类,主机名可以是机器名(如 ),也可以是其 IP 地址的文本表示形式。,IP地址与InetAddress类,9.3.1 Socket通信的一般结构,1. IP地址与InetAddress类,2. Socket通信的一般结构,Socket通信的一般结构,Socket中文译名是“套接字”,由主机号、端口号和协议名三部分主要内容组成。 Socket是TCP/IP协议的编程接口,一个Socket由一个IP地址和一个端口号唯一确定。 Socket有两种模式:流套接字(stream socket)和数据报套接字(datagram socket)。 流套接字提供了面向连
3、接的网络服务,采用TCP协议;数据报套接字则采用无连接的UDP协议。,包中提供了支持流套接字开发的ServerSocket与Socket类;支持数据报套接字开发的DatagramSocket类和DatagramPacket类。,9.3 Socket编程,9.3.1 Socket通信的一般结构,9.3.2 TCP Socket编程,9.3.3 UDP Socket编程,9.3.2 TCP Socket编程,1. Socket类,2. ServerSocket类,3. TCP socket通信过程,Socket类,J包中的Socket类用在客户端,在客户端通过构造一个Socket类来建立与服务器的
4、连接。 数据流连接的优点是所有的数据都能准确、有序地送到接收方,缺点是速度较慢。数据报则相反。,Socket类,Socket类,9.3.2 TCP Socket编程,1. Socket类,2. ServerSocket类,3. TCP socket通信过程,ServerSocket类,ServerSocket类用在服务器端,它监听和响应客户端的连接请求,并接收客户端发送的数据,向客户端发送数据。,ServerSocket类,public ServerSocket(intport) throws IOException 创建绑定到特定端口的服务器套接字。端口 0 在所有空闲端口上创建套接字。 传
5、入连接指示(对连接的请求)的最大队列长度被设置为 50。如果队列满时收到连接指示,则拒绝该连接。,public ServerSocket(intport, intbacklog) throws IOException 利用指定的 backlog 创建服务器套接字并将其绑定到指定的本地端口号。端口号 0 在所有空闲端口上创建套接字。 传入连接指示(对连接的请求)的最大队列长度被设置为 backlog 参数。如果队列满时收到连接指示,则拒绝该连接。,ServerSocket类,端口号代表了特定的服务,故必须保证此端口号没有被其他应用程序或服务占用。端口号的范围为065535,但01023为系统保留
6、的端口号,分配给了特定的应用协议,如80代表HTTP服务、21代表FTP服务。编写网络程序时,应使用1024以上的端口。,注意事项:,无需指定IP地址或主机名,因为ServerSocket类是用于服务器端监听客户端的连接。,ServerSocket类,利用Socket类中getlnputStream()以及getOutputStream()方法从每端的套接字产生对应的InputStream和OutputStream对象,并将套接字数据流封装到缓冲区内以便进行两台机器之间的数据通讯。,9.3.2 TCP Socket编程,1. Socket类,2. ServerSocket类,3. TCP so
7、cket通信过程,TCP socket通信过程,基于TCP的socket编程,Server,ServerSocket(int port),Socket accept(),OutputStream Socket.getOutputStream(),InputStream Socket.getInputSream(),Socket.close(),Client,Socket(InetAddress address, int port),OutputStream Socket.getOutputStream(),InputStream Socket.getInputStream(),Socket.c
8、lose(),9.3 Socket编程,9.3.1 Socket通信的一般结构,9.3.2 TCP Socket编程,9.3.3 UDP Socket编程,UDP Socket编程,C/S模式的两种通信方式,UDP Socket编程,Datagram Socket类,DatagramPacket类,UDP Socket通信过程,另一种是无连接的通信方式,这种方式不建立连接,它是在客户机和服务器之间利用数据报来发送和接收相互独立的数据包,这一通信过程没有建立一个专门的通信管道,所以它在网络线路无效的情况下数据包也会被发送出去。,在客户机和服务器之间传递信息有两种方式。,一种是建立连接的通信方式,
9、它首先需要建立连接,然后再传递数据,所有的数据是以包(packet)的形式按照一定的顺序发送和接收的,最后关闭连接,这一通信过程是由管道(channel)来保证的。,在管道通信中,数据包中不包含有关包的源和目的信息,这些信息由建立的通信管道负责指明。,而在无连接通信(数据报方式)中,所有的包都需要包含有该包的完整的源和目标信息,以便指明该数据包的走向。,UDP Socket编程,数据报是以UDP(User Datagram Protocol用户数据报协议)为通信协议的一种通信方式,它为两台计算机之间提供一种非可靠的无连接投递报文的通信服务。 由于这种通信方式不建立连接,所以它不能保证所有的数据
10、都能准确、有序地送到目的地,它允许重传那些由于各种原因半路地丢失的数据。 数据报的优点是通讯速度比较快,因此数据报服务一般用于传送非关键性的数据。,如:时钟服务、图像、声音传播,UDP Socket编程,C/S模式的两种通信方式,UDP Socket编程,DatagramSocket类,DatagramPacket类,UDP Socket通信过程,DatagramPacket类,Java利用数据报模式在网络上发送和接收数据包需要使用类库中的Datagram Socket类和DatagramPacket类。 DatagramSocket类用于收发数据包,而DatagramPacket类则包含了具
11、体的数据信息。,DatagramPacket类是进行数据报通信的基础,它包含了需要传送的数据、数据报的长度、IP地址和端口号等。如果创建一个准备传出数据的DatagramPacket类,那么需要知道一个准需要确的因特网地址和端口号。,数据报包用来实现无连接包投递服务。每条报文仅根据该包中包含的信息从一台机器路由到另一台机器。从一台机器发送到另一台机器的多个包可能选择不同的路由,也可能按不同的顺序到达。不对包投递做出保证。,DatagramPacket类,获得及设置IP地址,包数据、包长度、包偏移量,端口号等,参见JDK帮助文档,UDP Socket编程,C/S模式的两种通信方式,UDP Soc
12、ket编程,DatagramSocket类,DatagramPacket类,UDP Socket通信过程,DatagramSocket类,此类表示用来发送和接收数据报包的套接字。 数据报套接字是包投递服务的发送或接收点。每个在数据报套接字上发送或接收的包都是单独编址和路由的。从一台机器发送到另一台机器的多个包可能选择不同的路由,也可能按不同的顺序到达。,DatagramSocket类,DatagramSocket()构造方法是构造一个用于发送数据包的DatagramSocket类。 Datagram Socket(int port)构造方法是构造一个用于接收数据包的DatagramSocket
13、类,当构造完成Datagram Socket类后,就可以发送和接收数据包了。,UDP Socket编程,C/S模式的两种通信方式,UDP Socket编程,DatagramSocket类,DatagramPacket类,UDP Socket通信过程,基于UDP的socket编程,接收端(Server),发送端(Client),DatagramSocket(int port),DatagramSocket(),DatagramPacket(byte buf, int length),DatagramSocket.receive(DatagramPacket p),DatagramSocket.close(),DatagramSocket.close(),DatagramPacket(byte buf, int length, InetAddress address, int port),DatagramSocket.send(DatagramPacket p),例客户机与服务器的通信,小结,端口和IP地址为网络通信提供了确定的地址标识,IP地址表示发送端的目的计算机
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年芬兰语等级考试芬兰语言学习成果研究试卷
- 咖啡厅饮品供应管理协议
- 社会保险缴纳工资证明书(6篇)
- 2025年水上加油船项目申请报告
- 小明和爸爸的一次爬山经历记叙文作文4篇
- 2025年法语DELFDCLT级写作测试试卷:翻译技巧实战分析
- 2025年小学英语毕业考试模拟卷:英语跨文化交际案例分析题库
- 农民土地流转承包经营权委托管理协议
- 酒店投资与管理权合作经营协议
- 2025年差压变送器项目申请报告
- 事业单位工勤人员技师考试职业道德复习试题
- The Old Man and The Sea 老人与海 中英文对照版
- 居委会开具的自建房证明
- ICU成年患者疼痛、躁动镇静、谵妄、制动及睡眠障碍的预防和管理的临床实践指南(PADIS)2018
- 冷冻水管道工程施工工艺
- 混凝土拌合站拆除方案
- 对照品管理SOP双语
- 两台37kW三相交流电动机的动力配电柜设计(共21页)
- 积雪草提取物对胃粘膜的保护作用及其机制探讨
- 市中等职业学校学籍卡片(样表)
- 手术室清洁消毒记录表
评论
0/150
提交评论