Java程序设计教程课件:Java网络编程_第1页
Java程序设计教程课件:Java网络编程_第2页
Java程序设计教程课件:Java网络编程_第3页
Java程序设计教程课件:Java网络编程_第4页
Java程序设计教程课件:Java网络编程_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论