Java 网络编程

InetAddress 类表示IP地址,有两个子类,Inet4Address,Inet6Address,一个表示v4,一个表示v6,常用方法有

1
2
3
4
public static InetAddress getByName(String host) //通过主机名称得到InetAddress对象
public static InetAddress getLocalHost() //通过本机得到InetAddress
public String getHostName() //得到IP地址
public boolean isReachable(int timeout) //判断地址是否可达.

URL是统一资源定位符,可以直接使用此类找到互联网上的资源,常用方法如下

1
2
3
4
public URL(String spec) throws MalformedURLException //根据指定地址实例化URL对象
public URL(String protocol,String host,int port,String file) //实例化URL对象
public URLConnection openConnection() //取得一个URLConnection对象
public final InputStream openStream() //取得输入流

TCP开发

在Java中使用Socket完成TCP程序的开发,使用此类可以方便的建立可靠的,双向的,持续,点对点的通信连接.

在Socket的程序开发中,服务端使用ServerSocket等待客户端的连接,对于Java的网络程序来讲,每一个客户端都是用一个Socket对象表示.

ServerSocket类主要用在服务端程序的开发上,用于接收客户端的连接请求,常见方法

1
2
3
4
5
public ServerSocket(int port) //构造函数创建ServerSocket实例,并监听指定端口.
public Socket accept() //等待客户端连接,此方法连接前一直阻塞
public InetAddress getInetAddress() // 返回服务器的IP地址
public boolean isClosed() //返回ServerSocket的关闭状态
public void close() // 关闭ServerSocket

Sokcet类的常用方法

1
2
3
4
5
public Socket(String host,int port) //构造函数,构造Socket对象
public InputStream getInputStream() //返回此套接字的输入流
public OutputStream getOutputStream() // 返回此套接字的输出流
public void close() // 关闭此Socket
public boolean isClosed() //判断此套接字是否被关闭

在客户端,程序通过Socket类的getInputStream()方法取得服务器的输出信息,在服务端可以通过getOutputStream()方法取得客户端的输出信息.

UDP开发

在Java中使用DatagramSocket和DatagramPacket类完成UDP程序开发

在UDP开发中使用DatagramPacket类包装一条要发送的信息,之后使用DatagramSocket类用于完成信息的发送操作.

DatagramPacket

1
2
3
4
public DatagramPacket(byte[] buf, int length) //实例化DatagramPacket
public DatagramPacket(byte[] buf,int length, InetAddress address,int port)//实例化DatagramPacket对象时指定发送的数据,数据的长度,目标地址及端口
public byte[] getData() //返回接收的数据
public int getLength() // 返回要发送或接收数据的长度

DatagramSocket

1
2
3
public DatagramSocket(int port) // 创建DatagramSocket对象
public void send(DatagramPacket p) //发送数据报
public void receive(DatagramPacket p) //接收数据报