12网络程序设计Word文件下载.docx
《12网络程序设计Word文件下载.docx》由会员分享,可在线阅读,更多相关《12网络程序设计Word文件下载.docx(12页珍藏版)》请在冰豆网上搜索。
在网络程序中,可以用类.InetAddress的实例对象来记录网络地址。
类.InetAddress的成员方法:
publicstaticInetAddressgetLocalHost()throwsunknownHostException
创建本地计算机所对应的类.InetAddress的实例对象。
(3)创建类.InetAddress的实例对象:
publicstaticInetAddressgetByAddress(byte[]addr)throws
unknownHostException
其中参数addr指定它所对应的网络地址。
(4)创建类.InetAddress的实例对象:
publicstaticInetAddressgetByAddress(Stringhost)throws
其中参数host指定它所对应的网络地址。
12.1.2统一资源定位地址
URL由若干部分组成,常用的有协议(Protocol)、主机(Host)、端口号(Port)、文件和引用(Reference)等。
(1)协议:
获取网络资源的网络传输协议。
(A)HTTP:
(HypertextTransferProtocol,超文本传输协议)是在网络上进行超文本数据传输的一种协议。
(B)FTP:
(FileTransferProtocol,文件传输协议)是在网络上进行文件传输的协议。
(2)主机:
网络资源所在的主机
(3)端口号:
与主机通信的端口号(整数:
范围通常在0~65335之间)
(4)文件:
文件或者路径
(5)引用(也作section或anchor):
指向文件内部的某一节指针
URL格式协议:
//主机:
端口号/文件#引用
(1)创建实例对象:
通过类.URL的构造方法
publicURL(Stringspec)throwsMalformedURLException
参数spec指定该URL对应的字符串。
(2)返回在该URL中记录的协议名称
通过类.URL的成员方法
publicStringgetProtocol()
(3)返回在该URL中记录的主机名
publicStringgetHost()
(4)返回在该URL中记录的端口号
publicStringgetPort()没有端口号就返回-1
(5)返回在该URL中记录的文件名
publicStringgetFile()
(6)返回在该URL中记录的引用
publicStringgetRef()不含引用就返回null。
12.1.3通过统一资源定位地址获取网络资源
publicfinalInputStreamopenStream()throwsIOException可以将类.URL的实例对象与它所指向的资源建立起关联,从而可以将该网络资源当作一种特殊的数据流。
常用的读取网络资源数据的步骤如下:
(A)创建类URL的实例对象,使其指向给定的网络资源;
(B)通过类URL的成员方法openStream建立起连接,并返回输入流对象的引用,以便读取数据;
(C)可选步骤(可提高获取网络资源数据的速度)
通过java.io.BufferedInputStream或java.io.BufferedInputReader封装数据流;
(D)读取数据,并进行数据处理;
(E)关闭数据流。
(1)通过类.URL的成员方法:
publicfinalInputStreamopenStream()throwsIOException
打开URL对应的网络资源,并以字节输入流的形式返回。
(2)通过类java.io.InputStreamReader的构造方法
publicInputStreamReader(InputStreamin)将字节流in封装成为类java.io.InputStreamReader的实例对象。
(3)通过类java.io.BufferedReader的构造方法
publicBufferedReader(Readerin)
将不带缓存的类java.io.InputStreamReader的实例对象封装成为带缓存的类java.io.BufferedReader的实例对象。
(4)通过类java.io.BufferedReader的成员方法
publicStringreadLine()throwsIOException
读取网络资源的数据。
12.2基于TCP的网络程序设计
TCP是一种基于连接的协议,即先建立起连接再传输数据,连接通道的两端叫做套接字,通过TCP进行通信的双方通常称为服务器端和客户端,二者可以是不同电脑也可以是同一台电脑。
服务器端程序设计模型:
(A)首先创建类.ServerSocket的实例对象,注册在服务器端连接的端口号以及允许连接的最大客户数目。
(B)调用类.ServerSocket的成员方法accept来等待并监听来自客户端的连接,当建立起连接时,accept方法将返回连接通道在服务器端的套接字,套接字的类型是.Socket,通过该套接字可以与客户端进行通信。
(C)调用.Socket的成员方法getInputStream和getOutputStream获得该套接字所对应的输入输出流。
(D)通过获得的输入输出流与客户端进行通信,并处理从客户端获得的数据以及向客户端发送的数据。
(E)通信完毕后,关闭输入输出流和套接字
客户端程序设计模型:
(A)创建类.Socket的实例对象,与服务器端建立起连接。
创建实例对象时需要指定服务器端的主机名以及进行连接的端口号,二者必须完全匹配才能建立起连接。
(B)调用类.Socket的成员方法getInputStream和getOutputStream获得该套接字所对应的输入输出流。
(C)通过获得的输入输出流与客户端进行通信,并处理从客户端获得的数据以及向客户端发送的数据。
(D)通信完毕后,关闭输入输出流和套接字。
(1)创建服务器端的类的实例对象
通过.ServerSocket的构造方法
publicServerSocket(intport)throwsIOException
其中port指定服务器端采用的端口号。
(2)服务器端进入等待和监听阶段:
通过.ServerSocket的成员方法
publicSocketaccept()throwsIOException
当有连接建立时,该方法将创建套接字实例对象,并返回其引用值。
(3)创建客户端的类的套接字实例对象
通过.Socket的构造方法
publicSocket(Stringhost,intport)throwsIOException,
其中port指定服务器端采用的端口号,参数host指定服务器端的主机名,主机名和和端口号必须正确才能建立连接。
(4)返回该套接字所对应的输入流:
通过.Socket的成员方法
publicInputStreamgetInputStream()throwsIOException
(5)返回该套接字所对应的输出流:
publicOutputStreamgetOutputStream()throwsIOException
(6)强制立即进行输出:
通过调用类java.io.ObjectOutputStream的成员方法
publicvoidflush()throwsIOException
(7)将当前文本框的内容设置为参数t指定的字符串:
通过类javax.swing.JTextField的成员方法
publicvoidsetText(Stringt)
(8)用来设置当前文本框是否允许编辑:
publicvoidsetEnabled(booleanenable)
参数enable为true时,允许编辑,否则不能编辑。
(9)获取当前文本区域的字符串:
通过类javax.swing.JTextArea的成员方法
publicStringgetText()
(10)将字符串str添加到文本区域的末尾:
publicvoidappend(Stringstr)
(11)将当前文本区域的光标位置设置为文本区域的第position
个字符的后面:
publicvoidsetCarePosition(intposition)
当参数position为0时,光标位置被设置在文本区域的所有字符的前面。
(12)向系统请求让当前组件获得输入焦点:
publicbooleanrequestFocusInWindow()
12.3基于UDP的网络程序设计
UDP是一种控制我那个罗数据传输数据的协议,是一种简单的不可靠的无连接的网络数据传输协议。
基于UDP的网络数据传输要通过数据报套接字(DatagramSocket),它表示发送或者接受的数据报包的套接字,需要传输的数据通常封装成为数据报包。
(1)在服务器端创建数据报套接字实例对象:
通过类.DatagramSocket的构造方法
publicDatagramSocket(intport)throwsSocketException
该构造方法指定数据报套接字所对应的端口号。
(2)在客户端创建数据报套接字实例对象:
publicDatagramSocket()throwsSocketException