版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Java网络编程Java
网络通信方式套接字通信数据报通信本章内容提要Java1.网络通信方式网络的通信形式在传输层中主要有两种,即面向
连接的通信方式和面向无连接的通信方式。面向连接的通信方式指双方通信前需要首先建立
连接,然后再进行数据的传
递
,所有数据以包的形
式按照一定的顺序发送和接收,直到关闭连接,通信结束为止。面向无连接的通信方式指双方通信前不需要建立连接,双方直接利用数据报来发送和接收相互的数
据,是一种非可靠的无连接投递报文的通信方式。11.1
网络编程基本知识通信协议实际上就是计算机和网络设备之间进行通信时需要遵守的一组规定和约定的集
合。针对网络通信方式的不同,网络上主机之
间的应用程序在传输层进行的通信协议也有两
种
:TCP
(
传输控制协议)和UDP
(用户数据报
协议)。11.1
网络编程基本知识TCPTCP是一种面向连接的保证可靠传输的通信协议,
由于其连接的建立需要通过三次协商完成,因此也被
称为“
三次握手”协议。(2)UDPUDP是一种无连接的通信传输层协议,每个数据报
都封装在一个独立的IP分组里,包括完整的源地址和
目的地址,在到达目的地时
,到达顺序以及内容的正
确性都是不能保证的。11.1
网络编程基本知识
11.2套接字通信
套接字是IP地址和端口号的组合,其中用IP地址标识被访
问的计算机,端口号被规定为一个0~65535之间的整数(0~1023已被操作系统预定),用于标识正在计算机上运行的
一个网络程序(IP
地址就像某栋建筑物的地址,端口号就像某
栋建筑物中的房间号
)
。套接字通信以TCP协议为基础,通信双方首先利用套接字建
立连接,因此需要分别设计两个程序位于通信两端,由一端发
出连接请求,另一端接受请求并建立连接,然后进行通信。此时,请求方被称为客户端,接受方被称为服务器端。这种需要分别设计客户端
(Client)和服务器端(Server)的程序结构被称为客户/服务器(C/S)结构。1.服
务器端套接字服务器端程序需要首先定义服务器端套接字,提供给客户端程序进行访问。jServerSocket类用于进行服务器端套接字的操作,其中的构造方法ServerSocket(int
port)可定义服务器端套接字对象,参数port为指定要访问的服务器端程序的端口号。11
.
2套接字通信
11.2套接字通信
2.客户端套接字客户端程序需要定义客户端套接字,指定要连
接的计算机IP地址和在这台计算机上被请求连
接的服务器端程序的端口号。
包中的Socket类用于连接客户端套接字的操作,构造方
法Socket(String
host,int
port)用于定义客
户端套接字对象,参数host表示要访问的服务器
端程序的IP地址,参数port表示要访问的服务器
端程序的端口号。定义一个客户端套接字对象即
表示向服务器端套接字发出一个连接请求。
11.2套接字通信
3.通过套接字传递数据服务器端套接字和客户端套接字分别定义完毕后,就可以进行通信了。通信是通过数据流对象DataInputStream和DataOutputStream
完成的,其中,服务器端的输入流读
取客户端输出的数据,客户端的输入流读取服务器端输出
的数据,服务器端和客户端就是通过相互输入、输出的操
作完成数据通信的。例11-1(1)客户端程序:importjava.io.*;import
j*;publicclass
Client{publicstaticvoidmain(Stringargs[]){String[]mess
={"您好!","我是李雷。","请问,韩梅梅在吗?"};Socketmysocket;DatalnputStream
in=null;DataOutputStreamout=null;try{Sysntln("
李雷打电话找韩梅梅。");11.2套接字通信Java
11.2套接字通信
mysocket=newSocket("",2012);
in=new
DatalnputStream(mysocket.getlnputStream());out=new
DataOutputStream(mysocket.getOutputStream();
for(int
i=0;i<mess.length;i++){out.writeUTF(mess[i]);Strings=in.readUTF();Sysntln("对方说:"+s);Thread.sleep(500);}catch(Exception
e){Sysntln("服务器已断开"+e);}}}
11
.2套接字通信
(2)服务器端程序:importjava.io.*;publicclassServer{publicstaticvoidmain(Stringargs[]){String[]answer={"您好!","李雷您好。",".……我是韩梅梅。"};ServerSocket
serverForClient=null;Socket
socketOnServer=null;DataOutputStream
out=null;DatalnputStream
in=null;serverForClient=new
ServerSocket(2010);importj*;try{}catch(IOExceptione1){Sysntln(e1);try{Sysntln("电话无人使用中……");socketOnServer=serverForClient.accept();
Sysntln("电话铃响了,有人来电!");out=newDataOutputStream(socketOnServer.getOutputStream();
in=newDatalnputStream(socketOnServer.getlnputStream());
for(int
i=0;i<answer.length;i++){Strings=in.readUTF();11.2套接字通信Java}Sysntln("
对
方
说
:
"
+s);out.writeUTF(answer[i]);Thread.sleep(500);}catch(Exceptione){Sysntln("客户已断开"+e);
11.2套接字通信
J
}
11.3数据报通信
数据报通信是以UDP为通信协议的一种无连接的通信方
式。数据报又称为UDP套接字,它无需建立、拆除连接,而
是直接将信息打包传向指定的目的地,使用简
单
,占用系
统资源少,适合于非实时的通信。1.DatagramSocket类和DatagramPacket类Java语言提供了两个类DatagramSocket和DatagramPacket用来支持数据报通信,它们位于包中。其中,DatagramSocket用于在程序之间建立
传送数据报的通信连接,DatagramPacket
则用来表示一个
数
据报。
11.3数据报通信
■DatagramSocket
类有三个构造方法:■DatagramSocket()■DatagramSocket(int
prot)■DatagramSocket(intport,InetAddressladdr)各构造方法中,参数port指明socket所使用的端口号,如果未指明端口号,则把socket连接到本地主机上一
个可用的端口。参数laddr指明一个可用的地址。给出端口号时要保证不发生端口冲突,否则会生成SocketException类异常。
11.3数据报通信
■DatagramPacket
有四个构造方法:■DatagramPacket(bytebuf[],intlength)■DatagramPacket(bytebuf[],intlength,InetAddressaddr,int
port)■
DatagramPacket(byte[]buf,int
offset,int
length)■
DatagramPacket(byte[]buf,int
offset,int
length,InetAddress
address,int
port)各构造方法中,参数buf指明数据的存储位置,参数length
指明存储在buf
中的数据的个数,参数addr和port
指明
数据传输目的地址和端口,offset
指明了从buf
的哪一个位置
开始存放数据。11.3数据报通信Java■2.通过数据报传递数据■
例11-2■
(1)客户端程序:■public
class
UDPClient{■public
staticvoidmain(String[]args){try{DatagramSocket
dSocket=new
DatagramSocket();
byte[]buffer=new
byte[1024];Sysnt("输入发送的信息:");System.in.read(buffer);DatagramPacket
packet=newDataaramPacket(buffer.buffer.lenath.dSocket.send(packet);Sysntln("
客户端发送数据报完毕!");
dSocket.receive(packet);Sysntln("客户端接收返回的数据报!");}catch(IOException
e){Sysntln(e.toString();·
}}■(2)服务端程序:■
importj;■import
java.io.*;■
publicclass
UDPServer{nublicstaticvoidmain(Strinallaras)11.3数据报通信Java
11.3数据报通信
DatagramSocket
dSocket=newDatagramSocket(8008);byte[]buffer
=new
byte[1024];DatagramPacket
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《GBT 9969-2008工业产品使用说明书 总则》专题研究报告:面向未来的产品信息沟通战略与合规实践深度
- 《GB-T 26179-2010光源的光谱辐射度测量》专题研究报告
- 《GBT 21611-2008 危险品 易燃固体自燃试验方法》专题研究报告
- 《GBT 2423.21-2008电工电子产品环境试验 第2部分:试验方法 试验M:低气压》专题研究报告
- 《GBT 22231-2008 颗粒物粒度分布纤维长度和直径分布》专题研究报告-深度与前瞻应用
- 道路安全培训活动方案课件
- 2026年鲁教版九年级语文上册期末综合考核试题及答案
- 2025脓胸:全面解析与治疗指南课件
- 达内网络安全培训教程课件
- 车险培训课件2017
- 非职业一氧化碳中毒课件
- 保定市道路野生地被植物资源的调查与分析:物种多样性与生态功能的探究
- smt车间安全操作规程
- JJF 2254-2025戥秤校准规范
- 强制医疗活动方案
- DB42T 850-2012 湖北省公路工程复杂桥梁质量鉴定规范
- 月经不调的中医护理常规
- 2024-2025学年江苏省南通市如东县、通州区、启东市、崇川区高一上学期期末数学试题(解析版)
- 瑞幸ai面试题库大全及答案
- 现代密码学(第4版)-习题参考答案
- 缝纫车间主管年终总结
评论
0/150
提交评论