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();
}
}
}
}