public class Service { // 服务器
public static void main(String[] args) {
DatagramPacket dp = null; //打包 和 拆包数据
DatagramSocket ds = null; // 接收和 发送数据
//创建一个包 给客户端响应
DatagramPacket dpTo=null;
try {
byte [] buf=new byte[1024];
//创建数据包的对象
dp=new DatagramPacket(buf, buf.length);
ds=new DatagramSocket(8800);
//接收
ds.receive(dp);
//显示接收的信息 拆包
String msg=new String(dp.getData(), 0, dp.getLength());
//获取 对方的地址 客户端的信息
System.out.println(dp.getAddress().getHostAddress()+”说====:”+msg);
//回复给 客户端
byte[] reply=”您好!航母已经发货!”.getBytes();
// dp就是从客户端传来的信封 信封上肯定有 寄件人的地址
SocketAddress address=dp.getSocketAddress();
//打包成功
dpTo=new DatagramPacket(reply, reply.length,address);
//发送
ds.send(dpTo);
} catch (SocketException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
基于UDP的客服端代码
public class Client { //客户端 public static void main(String[] args) { DatagramPacket dp = null; //打包 和 拆包数据 DatagramSocket ds = null; // 接收和 发送数据 //创建一个包 给服务器响应 DatagramPacket dpTo=null; InetAddress address=null; try { //你在网上购物 要不要给客服 说你的地址 byte[] say="买个航空母舰!".getBytes(); //获取本机的地址! address = InetAddress.getByName("localhost"); //打包 dp=new DatagramPacket(say, say.length,address,8800); //发送 ds=new DatagramSocket(); ds.send(dp); //接收 byte [] buf=new byte[1024]; dpTo=new DatagramPacket(buf, buf.length); ds.receive(dpTo); //我们看客服给我们回复了 什么 拆包 String reply=new String(dpTo.getData(),0,dpTo.getLength()); System.out.println(dpTo.getAddress().getHostAddress()+"说===》"+reply); } catch (UnknownHostException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/12155.html