java套接字编程常用类_第1页
java套接字编程常用类_第2页
java套接字编程常用类_第3页
java套接字编程常用类_第4页
java套接字编程常用类_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

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

文档简介

Socket编程计算机科学与技术学院网络工程教研室赵秀梅Socket编程1、包4、Socket类3、ServerSocket类

5、数据报式套接字中所需的类2、InetAddress类包简介包:用于网络通信的类。.InetAddress:互联网地址类.URL:统一资源定位类.Socket:套接字类.ServerSocket:效劳器套接字类.DatagramPacket:数据报类.DatagramSocket:数据报套接字类Socket编程2、InetAddress类功能简介InetAddress类又称为互联网地址类,。该类的对象是封装计算机名称和IP地址的实例。可以使用主机名来获取InetAddress的实例,或者使用IP地址来构造InetAddress的实例。InetAddress对域名进行解析是使用本地机器配置或者网络命名效劳〔如域名系统DNS〕和网络信息效劳〔NetworkInformationService,NIS〕来实现的。Socket编程获取InetAddress类对象的方法InetAddress的构造函数不是公开的〔public〕,所以需要通过它提供的静态方法来获取。1〕publicstaticInetAddressgetByName(Stringhostname);根据给定的主机名hostname,InetAddress会尝试做连接DNS效劳器,并返回该主机名对应的InetAddress对象。如果找不到主时机抛出UnknownHostException异常。InetAddressi=InetAddress.getByName(“sina”);System.out.println(i);2、InetAddress类Socket编程获取InetAddress类对象的方法1〕publicstaticInetAddressgetByName(Stringhostname);hostname的值可为IP地址字符串,此时可以利用InetAddress对象的getHostName()方法按IP地址反向查找。如果没有查到相应的主机名,getHostName()返回的点分十进制的地址字符串。InetAddressi=InetAddress.getByName(“”);System.out.println(i); System.out.println(i.getHostName());//查到相应的主机名2、InetAddress类Socket编程获取InetAddress类对象的方法1〕publicstaticInetAddressgetByName(Stringhostname);hostname的值可为IP地址字符串,此时可以利用InetAddress对象的getHostName()方法按IP地址反向查找。如果没有查到相应的主机名,getHostName()返回的点分十进制的地址字符串。InetAddressi=InetAddress.getByName(“47”);System.out.println(i);

System.out.println(i.getHostName());//没查到相应的主机名2、InetAddress类Socket编程获取InetAddress类对象的方法2〕publicstaticInetAddress[]getAllByName(Stringhostname);获取具有相同名字hostname的一组InetAddress对象。如果找不到主时机抛出UnknownHostException异常。InetAddress[]inetOfbaidu= InetAddress.getAllByName(“baidu");for(intj=0;j<inetOfbaidu.length;j++){(inetOfbaidu[j]);}2、InetAddress类Socket编程获取InetAddress类对象的方法3〕publicstaticInetAddressgetLocalHost();返回本机的InetAddress对象。查找出错,抛出UnknownHostExceptionInetAddressipOfLocal=InetAddress.getLocalHost();System.out.println(ipOfLocal);2、InetAddress类Socket编程获取InetAddress类对象的方法4〕publicstaticInetAddressgetByAddress(byte[]addr)根据给定的addr,返回其对应的InetAddress对象。2、InetAddress类Socket编程byte[]address={(byte)107,(byte)23,(byte)216,(byte)196};InetAddressx=InetAddress.getByAddress(address);System.out.println(x);System.out.println(x.getHostName());3.1、ServerSocket类简介类ServerSocket类用在效劳器端,侦听和响应客户端的连接请求。ServerSocket类的主要任务:效劳器端耐心地等候客户端的连接请求,一旦客户端应用程序申请建立一个Socket连接,ServerSocket类就会通过accept()方法返回一个对应的效劳器端Socket对象,以便进行直接通信。从两台计算机连接成功时起,效劳器端与客户端就得到了一个真正的“Socket-Socket”连接。Socket编程3、ServerSocket构造方法重载形式之一publicServerSocket(intport)throwsIOException创立一个指定端口号的效劳器端的ServerSocket对象。连接请求队列的最大队列长度为50,假设连接请求到达时队列已满,那么拒绝连接。假设无法创立Socket并绑定于所请求的端口号那么抛出IOException异常。参数port:端口号。3.2、ServerSocket类构造方法Socket编程构造方法重载形式之二publicServerSocket(int

port,int

backlog)throwsIOException参数:backlog:连接请求队列的最大长度。

3.2、ServerSocket类构造方法Socket编程构造方法重载形式之三publicServerSocket(intport,intbacklog,InetAddressbindAddr)throwsIOException参数:bindAddr:需指定的要绑定到的本地IP地址。主要用于在多IP地址系统上运行的效劳器。效劳器Socket只在指定的地址侦听入站连接,不会侦听通过主机其他地址进入的连接。其他构造函数默认绑定本地主机的所有IP地址。当bindAddr为null时,缺省地接受对任何所有本地IP地址的连接。3.2、ServerSocket类构造方法Socket编程1〕publicInetAddressgetInetAddress()返回效劳器Socket的本地地址信息。2〕publicintgetLocalPort()效劳器socket正在监听的端口号。3〕publicStringtoString()返回该socket的字符串表示3.3、ServerSocket类其他方法Socket编程4〕publicSocketaccept()throwsIOException功能:在效劳器端指定端口侦听客户端发出的连接请求。该方法一直阻塞直到连接成功。如果效劳器端与客户端连接成功,该方法将返回一个新的Socket对象,通过该Socket对象与客户端的Socket对象进行通信。假设等待连接时发生I/O错误那么抛出IOException异常。3.3、ServerSocket类其他方法Socket编程类Java用来实现客户端TCP操作的根底类。在Java编程中Socket类负责一切与TCP有关的操作,包括连接的建立、传输、连接关闭及Socket选项的设置等操作。Socket类的输入输出都是通过流来实现的。Socket编程4、Socket类4.1、Socket类构造方法Socket类的构造方法Socket对象的创立可通过使用Socket类的构造方法完成。构造方法的功能:1〕创立Socket对象2〕客户端负责呼叫,尝试向效劳器发起连接请求,连接效劳器端的Socket。通过构造方法可以测试能否和主机的某个端口建立连接。Socket编程构造方法重载形式之一publicSocket(Stringhost,intport)throws UnknownHostException,IOException参数:host:效劳器主机名。port:端口号。功能:在客户端以指定的效劳器host和端口号port创立一个Socket对象,并向效劳器发出连接请求。在二者建立连接的过程中,由客户机负责发起呼叫。4.1、Socket类构造方法Socket编程构造方法重载形式之一publicSocket(Stringhost,intport)throws UnknownHostException,IOException异常的抛出:UnknownHostException:假设域名效劳器无法解析该效劳器名或域名效劳器没有运行,此时host无法可知,那么抛出UnknownHostException异常IOException:假设生成Socket时发生I/O错误那么抛出IOException异常。4.1、Socket类构造方法Socket编程构造方法重载形式之二publicSocket(InetAddressaddr,intport)throwsIOException参数:addr:效劳器地址信息InetAddress类对象4.1、Socket类构造方法Socket编程构造方法重载形式之三publicSocket(InetAddressaddress,intport,InetAddresslocalAddr,intlocalPort)throwsIOException功能:生成一个Socket并且连接到由address指定的效劳器的端口port上。该Socket将捆绑到由localAddr指定的本地主机的localPort端口上。4.1、Socket类构造方法Socket编程publicInetAddressgetInetAddress()返回连接到socket的远程主机的IP地址信息对象。publicInetAddressgetLocalAddress()返回socket关联的本地主机的IP地址信息对象。publicintgetPort()返回socket连接到的远程效劳的端口号。publicintgetLocalPort()返回该Socket绑定在本地计算机上的端口号。4.2、Socket类其他方法Socket编程publicInputStreamgetInputStream()throwsIOException为当前的socket对象创立输入流。publicOutputStreamgetOutputStream()throws IOException为当前的socket对象创立输出流。publicStringtoString()转换该Socket成一个String字符串表示。publicsynchronizedvoidclose()throwsIOException关闭建立的Socket连接。当通信结束时,应调用该方法关闭Socket连接。假设在关闭Socket连接时发生I/O错误那么抛出IOException异常。4.2、Socket类其他方法Socket编程Socket编程5.2数据报式套接字中所需的类DatagramPacket类数据报封装类。把具体的要传输的信息,包含IP地址,端口号和需要传输的数据等封装在称为数据报〔Datagram〕的UDP包中。DatagramSocket类用于收发UDP数据报的套接字接口类。为发送数据,要将数据封装到DatagramPacket中,使用DatagramSocket发送该包。要接收数据,要从DatagramSocket中接收一个DatagramPakcet对象,然后解析该包的内容Socket编程5.3

DatagramSocket类功能该类表示用来发送和接收数据报的套接字〔Socket〕。要收发DatagramPacket,必须创立一个数据报套接字DatagramSocket。构造方法publicDatagramSocket()throwsSocketException功能:创立用于数据报通信的socket对象,由本地主机自动指定的一个可用的端口号。DatagramSocketsocket=newDatagramSocket();//创立一个用于收发数据报的DatagramSocket对象Socket编程5.3

DatagramSocket类构造方法publicDatagramSocket(intport)throwsSocketException功能:创立用于数据报通信的socket对象,并且把它绑定到本地主机指定的端口port。publicDatagramSocket(intport,InetAddressaddr)throwsSocketException功能:创立用于数据报通信的socket对象,并绑定到指定的本地地址addr的指定端口port。DatagramSocketsocket=newDatagramSocket(3000);//在端口3000创立用于通信的Socket对象Socket编程5.3

DatagramSocket类常用方法publicvoidsend(DatagramPacketp)throwsIOException功能:将数据报p发送出去。publicsynchronizedvoidreceive(DatagramPacketp)throwsIOException功能:从网络接收一个UDP数据报包,并存储在DatagramPacket类对象p中。该数据报p还包含发送方的IP地址和发送方主机的端口号。Socket编程5.3

DatagramSocket类publicintgetLocalPort()功能:获取该socket绑定的本地主机的端口号。

publicvoidclose()功能:释放该数据报socket所占用的端口。常用方法publicInetAddressgetLocalAddress()功能:获取该socket绑定的本地地址。

Socket编程5.4

DatagramPacket类功能是进行数据报通信的根本单位。包含了IP地址、端口号和需要传输的数据等。在发送和接收数据报时,要创立DatagramPakcet类对象作为数据的载体。构造方法之一:发送用的数据报publicDatagramPacket(byteibuf[],intilength,InetAddressiaddr,intiport)构造方法之二:接收用的数据报publicDatagramPacket(byte

ibuf[],intilength)Socket编程5.4

DatagramPacket类构造方法之一:发送用的数据报publicDatagramPacket(byteibuf[],intilength,InetAddressiaddr,intiport)功能:创立一个用于发送数据报的DatagramPacket类对象。参数:ibuf:存储数据包的缓冲区。ilength:发送数据包的长度,必须小于等于ibuf.length。iaddr:数据报要发送到的目的IP地址。iport:数据报要发送到的目的地址的端口号。Socket编程5.4

DatagramPacket类构造方法之一:发送用的数据报publicDatagramPacket(byteibuf[],intilength,InetAddressiaddr,intiport)举例:Stringdate=newDate().toString();//获取效劳器当前时间buf=date.getBytes();//将当前日期时间存入字节数组bufpacket=newDatagramPacket(buf,buf.length,addr,port);//构造发送数据报包socket.send(packet);//发送数据报Socket编程5.4

DatagramPacket类构造方法之一:接收用的数据报publicDatagramPacket(byteibuf[],intilength)功能:创立一个用于接收数据报的DatagramPacket类对象。参数:ibuf:存储数据包的缓冲区。在数据报通信中,发送和接收一个数据报,都需提供一个缓冲区,用来安置发送和接收到的数据报。ilength:接收数据包的长度,必须小于等于ibuf.length。举例:DatagramPacketpacket=newDatagramPacket(buf,buf.length);socket.receive(packet);//接收数据报Socket编程5.4

DatagramPacket类常用方法之解析数据报的方法〔1〕publicsynchronizedInetAddressgetAddress()功能:返回存放在接收或发送的数据报中的远程主机的IP地址。〔2〕publicsynchronizedintgetPort()功能:返回存放在接收或发送的数据报中的远程端口号。〔3〕publicsynchronizedbyte[]getData()功能:返回一个字节数组,其中包含数据报中的数据。〔4〕publicsynchronizedintgetLength()功能:返回数据报中数据的长度

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论