网络编程的运用我们首先需要创建一个客户类和服务器类,且两者都需要连接Exception类,通过该类的接口来写入信息(注意连接的接口号要相同负责将无法接收信息),然后使用我们所学的io流来进行输入与接收,这些东西的格式几乎是死定的所以不需要太多技巧记下就可。
服务端:
package com.ytzl.第4章.demo3UDP;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
/*服务端*/
public class UDPUserServer {
public static void main(String[] args) throws Exception{
//模拟返回的数据
byte[] infos = new byte[1024];
//接受客户端发送的数据包,接收到信息以后会返回到infos里面
DatagramPacket dp = new DatagramPacket(infos,infos.length);
DatagramSocket socket = new DatagramSocket(5000);
while (true) {
//接收客户端发送的数据包,并且将信息封装在dp中
socket.receive(dp);
//将byte数组的内容转换成字符串
String info = new String(dp.getData());
if (info.equals("停")){
break;
}
System.out.println(info);
//UDP的特点:通信双方完全平等,TCP的特点,建立通信的时候存在主次之分
}
}
}
客户端:
package com.ytzl.第4章.demo3UDP;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.UnknownHostException;
import java.util.Scanner;
/*用户端*/
public class UDPUserClient {
public static void main(String[] args) throws Exception {
Scanner scanner = new Scanner(System.in);
while (true) {
//模拟数据
System.out.println("请发言!");
String info = scanner.next();
if (info.equals("停")){
break;
}
byte[] infos = info.getBytes();
//创建地址对象,通过getByName()方法获取本机地址
InetAddress ia = InetAddress.getByName("localhost");
//构建客户端发送的数据包对象 1.byte类型数据 2.数据的长度
DatagramPacket dp = new DatagramPacket(infos, infos.length, ia, 5000);
//将数据包,打包成服务器需要的对象
DatagramSocket ds = new DatagramSocket();
//使用send方法发送数据包
ds.send(dp);
}
}
}
运行结果: