目录
InetAddress类
为了方便我们对IP地址的获取和操作,java提供了一个类InetAddress 供我们使用
此类表示互联网协议 (IP) 地址。
方法
public static InetAddress getByName(String host)
public String getHostAddress()//获取IP
public String getHostName()//获取主机名
public class MyTest {
public static void main(String[] args) throws UnknownHostException {
InetAddress byName = InetAddress.getByName("LAPTOP-AKFC4CUM");
String hostAddress = byName.getHostAddress();
System.out.println(hostAddress);
String hostName = byName.getHostName();
System.out.println(hostName);
System.out.println("==========");
InetAddress byName1 = InetAddress.getByName("172.20.10.2");
String hostName1 = byName1.getHostName();
System.out.println(hostName1);
String hostAddress1 = byName1.getHostAddress();
System.out.println(hostAddress1);
}
}
Socket编程
UDP协议发送数据
步骤
1.创建UDP Socket客户端
DatagramSocket ds = new DatagramSocket();
2. 发送数据报包
DatagramPacket( byte[] buf, int length, InetAddress address,int port)
构造数据报包,用来将长度为 length 的包发送到指定主机上的指定端口号。
byte[] bytes = "你好UDP服务器我来了".getBytes();
DatagramPacket dp = new DatagramPacket(bytes, bytes.length, InetAddress.getByName("192.168.10.1"), 8888);
ds.send(dp);
3.释放资源
ds.close();
UDP协议接收数据
步骤
1.创建服务端的Socket并暴露端口号
DatagramSocket ds = new DatagramSocket(8888);
2.接收客户端发来的数据报包
DatagramPacket( byte[] buf, int length)
构造 DatagramPacket,用来接收长度为 length 的数据包。
byte[] bytes = new byte[1024];
DatagramPacket dp = new DatagramPacket(bytes, bytes.length);
//阻塞式方法 此方法在接收到数据报前一直阻塞
ds.receive(dp);
3.从数据报包中取出数据
byte[] data = dp.getData();
获取数据的实际长度
int length = dp.getLength();
String s = new String(data, 0, length);
4.释放资源
ds.close();
TCP协议发送数据
步骤
1.创建客户的Socket
Socket socket = new Socket("192.168.0.110", 8888);
2.获取通道中的输出流,发送数据给服务端
OutputStream out = socket.getOutputStream();
out.write("你好TCP我来了".getBytes());
3.释放资源
socket.close();
TCP协议接收数据
步骤
1.创建服务端的Socket 并暴露端口号
ServerSocket ss = new ServerSocket(8888);
2.侦听客户端Socket
Socket sk = ss.accept(); //阻塞式方法 侦听并接受到此套接字的连接。此方法在连接传入之前一直阻塞。
3.获取通道中的输入流
InputStream in = sk.getInputStream();
byte[] bytes = new byte[1024];
int len = in.read(bytes);
String msg = new String(bytes, 0, len);
System.out.println(msg);
4.释放资源
ss.close();