1)TestUDPServer : import java.net.*; public class TestUDPServer { public static void main(String args[]) throws Exception { DatagramSocket ds = new DatagramSocket(5678); byte buf[] = new byte[1024]; //UDP的协议都是用数组来存放的吗? DatagramPacket dp = new DatagramPacket(buf, buf.length); while(true) { ds.receive(dp); //这个receive是什么意思? System.out.println(new String(buf,0,dp.getLength())); // 这句话完全不懂,特别是那个“0” 是干什么的? } } } 2)TestUDPClient : import java.net.*; public class TestUDPClient { public static void main(String args[]) throws Exception { byte[] buf = (new String("Hello")).getBytes(); //什么意思? DatagramPacket dp = new DatagramPacket(buf, buf.length, new InetSocketAddress("127.0.0.1", 5678) ); DatagramSocket ds = new DatagramSocket(9999); //这个呢? ds.send(dp); ds.close(); } }
解释:
ds.receive(dp); //这个是接受网络数据 new String(buf,0,dp.getLength())这个是String的构造函数,就是在buf中从第0位开始取dp的长度的字符串 byte[] buf = (new String("Hello")).getBytes();将字符数组转换成Byte类型的数组 new DatagramSocket(9999) 这个是设置网络通讯端口