//////////////////////////////////////////////////////////////////////////////////////////////////////////////
学习收获:
//////////////////////////////////////////////////////////////////////////////////////////////////////////////
1.//定义一个输入 包的是键盘输入
Scanner sc = new Scanner(System.in);
//键盘输入存入字符串变量
String content = sc.next();
//字符串通过 getBytes() 方法获取字节 存入 buf 数组中
byte[] buf = content.getBytes();
2.
//DatagramPacket p 内容转换成数组,测试 p 中的内容是否为空
byte[] dataTest = p.getData();
//////////////////////////////////////////////////////////////////////////////////////////////////////////////
1.clientTest.java
//////////////////////////////////////////////////////////////////////////////////////////////////////////////
public class cilentTest {public static void main(String args[]) {
try {
//定义一个 DatagramSocket 对象
DatagramSocket socket = new DatagramSocket();
//定义一个输入 包的是键盘输入
Scanner sc = new Scanner(System.in);
//键盘输入存入字符串变量
String content = sc.next();
//字符串通过 getBytes() 方法获取字节 存入 buf 数组中
byte[] buf = content.getBytes();
//测试是否存入数组。。。忽略它 = =
for(int i=0;i<buf.length;i++){
System.out.println("buf 的值:"+ buf[i]);
}
//udp 只能传输不超过 64 kb 的文件
if (buf.length > 1024 * 64) {
System.out.println("输出内容超出 udp 长度");
return;
}
//定义一个数据包 把 buf 数组的的内容,长度传进来
DatagramPacket packet = new DatagramPacket(buf, buf.length);
//设置访问的 IP 地址
packet.setAddress(InetAddress.getByName("192.168.1.159"));
//设置端口
packet.setPort(5550);
//把 packet 通过建立好的 socket 对象发送
socket.send(packet);
} catch (SocketException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////
2.server.java
//////////////////////////////////////////////////////////////////////////////////////////////////////////////
public class server {
/**
* @param args
*/
public static void main(String[] args) {
try {
//定义一个 DatagramSocket 对象 包含端口
DatagramSocket s = new DatagramSocket(5550);
//定义一个空的数组 并把它打包成 DatagramPacket 的数据包,此时 packet 是 null
byte[] b = new byte[1024*64-1];
DatagramPacket p = new DatagramPacket(b, b.length);
//DatagramPacket p 内容转换成数组,测试 p 中的内容是否为空
byte[] dataTest = p.getData();
for (int i = 0; i < 10; i++) {
System.out.println("packet 的内容:" + dataTest[i]);
}
System.out.println("等待接收数据包。。。");
//通过 receie 方法把从客户端传来的 packet 接收
s.receive(p);
//读取接收的数据,存入数组
byte[] date = p.getData();
String str = new String(date);
System.out.println("接收到" + p.getAddress().getHostAddress()
+ "发送过来的数据报:" + str);
} catch (SocketException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}