!!!这是循环打印的输入的内容,如果要循环输入的话,一定要记得切换线程来输入,要不不管用的
package 网络编程UDP; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; import java.net.SocketException; public class UDPClient { public static void main(String[] args) { DatagramSocket ds = null; try { // 创建客户端的套接字对象 ds = new DatagramSocket(); // 定义一个发送的内容 // 字符串.getBytes()将字符串转换为字节数组 byte[] bs = "你好".getBytes(); // 创建要发送的目的的IP地址也可以是本机的名字也可以是192.168.1.102(本人电脑) InetAddress is = InetAddress.getByName("MSI"); // 打数据包 DatagramPacket dp = new DatagramPacket(bs, bs.length, is, 10005); // 发送数据 ds.send(dp); } catch (SocketException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } finally { if (ds != null) { ds.close(); } } } }
package 网络编程UDP; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; import java.net.SocketException; public class UDPServer { public static void main(String[] args) { DatagramSocket ds = null; try { //创建UDP服务器端的对象,必须制定端口8000以前的都被占用了,建议是10000以后 的 ds = new DatagramSocket(10005); //定义接收数据的字节数组 byte[] bs = new byte[1024]; //定义接收的数据包 DatagramPacket dp = new DatagramPacket(bs,bs.length); System.out.println("服务器已经启动"); ds.receive(dp); //获得发送端的IP InetAddress ia = dp.getAddress(); //获取数据包中的数据 byte[] bs1 = dp.getData(); //获得接收数据的长度(实际接收的长度) int len = dp.getLength(); //组装接收的数据 String data = new String(bs1,0,len); System.out.println(ia.getHostAddress()+"接收了"+data); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); }finally { if(ds!=null) { ds.close(); } } } }
---恢复内容结束---
原文地址:https://www.cnblogs.com/java-jiangtao-home/p/9388344.html
时间: 2024-10-15 18:46:39