Java网络编程-超好的总结.docx_第1页
Java网络编程-超好的总结.docx_第2页
Java网络编程-超好的总结.docx_第3页
Java网络编程-超好的总结.docx_第4页
Java网络编程-超好的总结.docx_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

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

文档简介

一:InetAddress类:InetAddress类在网络API套接字编程中扮演了一个重要角色。 由于InetAddress类只有一个构造函数,而且不能传递参数,所以不能直接创建InetAddress对象,比如下面的做法就是错误的: InetAddress ia = new InetAddress (); 但我们可以通过下面的方法创建来创建一个InetAddress对象或InetAddress数组: . getAllByName(String host)方法返回一个InetAddress对象的引用,每个对象包含一个表示相应主机名的单独的IP地址,这个IP地址是通过host参数传递的,对于指定的主机如果没有IP地址存在那么这个方法将抛出一个UnknownHostException 异常对象。 . getByAddress(byte addr)方法返回一个InetAddress对象的引用,这个对象包含了一个Ipv4地址或Ipv6地址,Ipv4地址是一个4字节数组,Ipv6地址是一个16字节地址数组,如果返回的数组既不是4字节的也不是16字节的,那么方法将会抛出一个UnknownHostException异常对象。 . getByAddress(String host, byte addr)方法返回一个InetAddress对象的引用,这个InetAddress对象包含了一个由host和4字节的addr数组指定的IP地址,或者是host和16字节的addr数组指定的IP地址,如果这个数组既不是4字节的也不是16位字节的,那么该方法将抛出一个UnknownHostException异常对象。 . getByName(String host)方法返回一个InetAddress对象,该对象包含了一个与host参数指定的主机相对应的IP地址,对于指定的主机如果没有IP地址存在,那么方法将抛出一个UnknownHostException异常对象。 . getLocalHost()方法返回一个InetAddress对象,这个对象包含了本地机的IP地址,考虑到本地主机既是客户程序主机又是服务器程序主机,为避免混乱,我们将客户程序主机称为客户主机,将服务器程序主机称为服务器主机。 1:获取网络中的主机域名和ip地址 try /InetAddress ia=InetAddress.getByName(MICROSOF-F92F47); InetAddress ia=InetAddress.getByName();/ InetAddress ia=InetAddress.getLocalHost(); System.out.println(ia.getHostName();System.out.println(ia.toString(); catch (UnknownHostException e) / TODO Auto-generated catch blocke.printStackTrace(); ServerSocket:服务器类 TCP通信* Socket:客户端类二:网络编程类 DatagramSocket UDP通信 DatagramPacket三:ServerSocket类 1:ServerSocket类用来表示服务器套接字。服务器套接字通过指定的端口来等待连接的套接字,他的主要功能是等待来自网络上的连接“请求”。服务器套接字一次可以与一个套接字连接,如果多台客户机同时提出连接请求,服务器套接字会将请求连接的客户机存入队列中,然后从中取出一个套接字,与服务器新建的套接字连接起来,如果请求连接数大于最大容纳数,则多出的请求被拒绝。队列的默认大小为50.2:ServerSocket类的构造方法:ServerSocket() 创建非绑定服务器套接字。ServerSocket(intport) 创建绑定到特定端口的服务器套接字。ServerSocket(intport, intbacklog) port: 创建绑定到特定端口的服务器套接字。 Backlog:指定队列的最大长度。3:方法摘要Socketaccept() 侦听并接受到此套接字的连接。voidbind(SocketAddressendpoint) 将 ServerSocket 绑定到特定地址(IP 地址和端口号)。voidbind(SocketAddressendpoint, intbacklog) 将 ServerSocket 绑定到特定地址(IP 地址和端口号)。voidclose() 关闭此套接字。InetAddressgetInetAddress() 返回此服务器套接字的本地地址。intgetLocalPort() 返回此套接字在其上侦听的端口。booleanisBound() 返回 ServerSocket 的绑定状态。booleanisClosed() 返回 ServerSocket 的关闭状态。StringtoString() 作为 String 返回此套接字的实现地址和实现端口。4:调用ServerSocket类的accept()方法会返回一个和客户端Socket对象连接的Socket对象。5:服务器端的Socket对象使用getOutputStream()方法获得的输出流将指向客户端Socket对象使用getInputStream()方法获得的那个输入流。反之也成立。也就是说:当服务器端向输出流写入信息时,客户端通过相应的输入流就能读取;反之也成立。6:创建一个服务器套接字:public static void main(String args) / TODO Auto-generated method stub try ServerSocket s=new ServerSocket(9999);System.out.println(成功创建服务器套接字);while(true)System.out.println(等待客户端的连接.);Socket so=s.accept();System.out.println(与客户端建立连接); catch (IOException e) / TODO Auto-generated catch blocke.printStackTrace();四:Socket类1:Socket类是套接字类。使用Socket类时需要制定待连接的服务器的ip和端口号。服务器套接字与客户端套接字连接成功后,则可以获取套接字的输入输出流,进行数据交换。2:构造方法:构造方法摘要Socket() 通过系统默认类型的 SocketImpl 创建未连接套接字Socket(InetAddressaddress, intport) 创建一个流套接字并将其连接到指定 IP 地址的指定端口号。Socket(Stringhost, intport) 创建一个流套接字并将其连接到指定主机上的指定端口号。Socket(Stringhost, intport, InetAddresslocalAddr, intlocalPort) 创建一个套接字并将其连接到指定远程主机上的指定远程端口。host用于指定服务器的ip地址,port是连接服务器的端口号。五:例:客户端和服务器端的连接: 1:服务器端:public class HelloServer /可以使用telnet进行测试:open localhost 9999public static void main(String args) throws IOException /实例化一个服务器端的socket连接 ServerSocket ss=new ServerSocket(9999); /用于向客户端打印输出 PrintWriter out=null; /实例化一个客户端对象,用于接收客户端的连接 Socket cs=null; System.out.println(等待客户端连接.); /通过ServerSocket类中的accept()方法, /接收客户端的请求,此方法返回一个客户端的Socket请求 cs=ss.accept(); /out就具备了向cs打印的功能 out=new PrintWriter(cs.getOutputStream(),true); out.println(Hello world); cs.close(); ss.close();客户端:public class HelloClient public static void main(String args) throws UnknownHostException, IOException /实例化一个Socket对象,在本机的9999端口进行监听Socket cs=new Socket(localhost,9999);/次对象用于读取服务器端发送过来的数据BufferedReader in=null; /用来将输入输出流与socket关联/getInputStream()返回此对象的输入流;然后把输入流转化为字符流in=new BufferedReader(new InputStreamReader(cs.getInputStream(); System.out.println(in.readLine(); in.close(); cs.close();例2:服务器端:import java.io.*;import .*;public class EchoServer public static void main(String args) throws IOException ServerSocket serverSocket = null;PrintWriter out = null;BufferedReader in = null;try / 实例化监听端口serverSocket = new ServerSocket(1111); catch (IOException e) System.err.println(Could not listen on port: 1111.);System.exit(1);Socket incoming = null;while (true) incoming = serverSocket.accept();out = new PrintWriter(incoming.getOutputStream(), true);/ 将字节流放入字符流缓冲之中in = new BufferedReader(new InputStreamReader(incoming.getInputStream();/ 提示信息out.println(Hello! . . . );out.println(Enter BYE to exit);out.flush();/ 在没有异常的情况下不断循环while (true) / 只有当有用户输入数据的时候才返回数据内容String str = in.readLine();/ 当用户连接断掉时会返回空值nullif (str = null) / 退出循环break; else / 对用户输入字串加前缀Echo:,将此信息打印到客户端out.println(Echo: + str);out.flush();/ 退出命令,equalsIgnoreCase()是不区分大小写的比较if (str.trim().equalsIgnoreCase(BYE)break;/ 收尾工作out.close();in.close();incoming.close();serverSocket.close();客户端:import java.io.*;import .*;/ 客户端程序public class EchoClient public static void main(String args) throws IOException Socket echoSocket = null; PrintWriter out = null; BufferedReader in = null; try echoSocket = new Socket ( localhost, 1111); out = new PrintWriter(echoSocket.getOutputStream(), true); in = new BufferedReader( new InputStreamReader(echoSocket.getInputStream(); catch (UnknownHostException e) System.err.println(Dont know about host: localhost.); System.exit(1); System.out.println(in.readLine();System.

温馨提示

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

评论

0/150

提交评论