网络编程(DUP通信与TCP通信)
文章目录
1 InetAddress
为了方便我们对IP地址的获取和操作,Java提供了一个类InetAddress供我们使用。
InetAddress:此类表示Internet协议(IP)地址。
创建对象
public static InetAddress getByName(String host)
throws UnknownHostException
用于获取一个InetAddress对象。host参数既可以是机器名称,也可以是IP地址。
获取主机名/IP地址
public String getHostName()
public String getHostAddress()
上面两个方法用于从创建好的InetAddress对象获取主机名和IP地址。
代码实例
import java.net.InetAddress;
import java.net.UnknownHostException;
public class InetAddressTest {
public static void main(String[] args) throws UnknownHostException {
// 静态方法创建InetAddress对象,表示一个ip地址
InetAddress address = InetAddress.getByName("192.168.1.9");
//获取主机名
String name = address.getHostName();
//获取ip地址
String ip = address.getHostAddress();
System.out.println("主机名:" + name);//主机名:LAPTOP-xxxxxxxx
System.out.println("IP地址:" + ip);//IP地址:192.168.1.9
}
}
2 UDP通信
2.1Java中的UDP通信
- UDP协议是一种不可靠的网络协议,它在通信的两端各建立一个Socket对象,但是这两个Socket只是发送,接收数据的对象,因此对于基于UDP协议的通信双方而言,没有所谓的客户端和服务器的概念。
- Java提供了DatagramSocket类作为基于UDP协议的Socket。 通过DatagramSocket实现UDP发送、接收数据。
由此可见理解了DatagramSocket就能理解UDP通信。接下来将基于DatagramSocket分别介绍UDP发送数据和UDP接受数据
2.2 DatagramSocket
创建对象
public DatagramSocket()
throws SocketException
创建一个数据包套接字对象,与主机任何可用端口绑定。
public DatagramSocket(int port)
throws SocketException
创建一个数据包套接字对象,与主机指定的端口绑定
发送/接收
public void send(DatagramPacket p)
throws IOException
public void receive(DatagramPacket p)
throws IOException
注意到发送/接收的是一个DatagramPacket 对象
关闭
public void close()
2.2-1 DatagramPacket
构造方法(用于发送数据)
public DatagramPacket(byte[] buf,
int length,
InetAddress address,
int port)
其中address为接收端的地址,port为接收端的端口
构造方法(用于该接收数据)
public DatagramPacket(byte[] buf,
int length)
注意!收发数据时用到的DatagramPacket需要用到不同的构造方法
获取数据/数据长度
public byte[] getData()
public int getLength()