发送端
package com.dyjava21;
import java.io.*;
import java.lang.String;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;
public class Test {
public void sy() {
DatagramSocket x=null;
try {
x=new DatagramSocket();// 1.定义udp协议数据报对象
byte[] b="nihaobeijing".getBytes(); //5.发送文字string类型转为 定义的数组
InetAddress s = InetAddress.getByName("127.0.0.1"); //4.为ip对象新建(inetaddress是没法直接new,需要调静态方法getbyname(参数为string类型的ip地址))
DatagramPacket m=new DatagramPacket(b,b.length,s,7777); //3.填写满足需求的m类型,参数为(数组,数组长度,ip对象,端口号)
x.send(m); //2.用udp数据报对象调send方法,参数变量为m
} catch (Exception e) {
e.printStackTrace();
}finally {
if(null!=x){
x.close();
}
}
}
public static void main(String[] args) {
Test a=new Test();
a.sy();
}
}
接收端
package com.dyjava21;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.Socket;
import java.net.SocketException;
public class Out {
public void cf(){
DatagramSocket d= null;
try {
d = new DatagramSocket(7777); //1定义数据报对象;
byte[] b=new byte[1024]; //定义接收数组b 这里取得的数组包含除了数据之外还有很多附加的信息
DatagramPacket m=new DatagramPacket(b,0,b.length);// 3.定义m
d.receive(m);//2接收包m
byte[] t = m.getData();//m调用getdata得到的数组才是扒掉附加信息后真正的包含数据的数组,
String ss=new String(t,0,t.length); //数组t转换为string类型
System.out.println(ss);
} catch (Exception e) {
e.printStackTrace();
}finally {
if(null!=d){
d.close();
}
}
}
public static void main(String[] args) {
Out sss=new Out();
sss.cf();
}
}