SendTest :
package udp;
}
RecTest:
package udp;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;
public class RecTest {
public static void main(String[] args) {
try {
//定义一个端口号为5555快递员
DatagramSocket dgs = new DatagramSocket(5555);
byte[] bt = new byte[1024];
//定义数据报包的容器大小 已经存放在bt字节数组中
//把字节数组bt和bt中存放的元素的长度“放进袋子中”
DatagramPacket dgp = new DatagramPacket(bt, bt.length);//获取bt字节数组,并且获得bt中存放的元素的长度
dgs.receive(dgp);//端口号为5555快递员 接受 发送方发送的数据
/*
* 因为数据的传输或接受都是以字节的形式传递,所以需要将字节转换字符串
* dgp.getData():获取数据报包中的数组,此方法返回的类型为byte[]
* 0:索引 数组的索引是0开始,0代表的为第一位
* dgp.getLength():获取字节数组的长度
*
* 也可以定义bt,0,bt.length:获取的为定义的字节数组的长度(1024),浪费资源
*/
String str = new String(dgp.getData(), 0, dgp.getLength());
System.out.println(str);
byte[] by = "好的,谢谢".getBytes();
//把字节数组by和by中存放的元素的长度等目标信息和目标端口号“放进袋子中”
DatagramPacket ddp = new DatagramPacket(by, by.length, InetAddress.getByName("127.0.0.1"), 1234);
dgs.send(ddp);//端口号为5555快递员发送
byte[] bye=new byte[1024];
DatagramPacket dp=new DatagramPacket(bye, bye.length);
dgs.receive(dp);
String str233=new String(dp.getData(),0,dp.getLength());
System.out.println(str233);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}