java中UPD的一个简单的例子

import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;

public class UpdSend {
 
 public static void main(String[] args)  {
  
  try {
   //这是发送的upd的socket,可以随便从哪个端口发送出去,不写入任何参数,表示系统会选取一个我们的应用程序没有占用的端口发送出去
   DatagramSocket datagramSocket = new DatagramSocket();
   //这是发送发的数据包,第三个参数指定发送到到哪个计算机(也就是指定指定的计算机的IP),第四个参数是发送那个端口,这里的IP和port必须要指定,要不然我不知道发送哪里去啊
   String str = "I love you 我爱你";
   //这里的第二个参数是发送的字节的长度,不是字符窜的长度,如果写的是字符窜的长度,英文下
   DatagramPacket datagramPacket = new DatagramPacket(str.getBytes(), str.getBytes().length, InetAddress.getByName("192.168.1.101"), 3000);
   datagramSocket.send(datagramPacket);
   datagramSocket.close();
  } catch (Exception e) {
   e.printStackTrace();
  }
 }

}

import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.SocketException;

public class UpdReceived {
 
 public static void main(String[] args) {
  try {
   //这里必须要指定socket的端口,不然我不知道是从哪个端口去接受数据
   DatagramSocket datagramSocket = new DatagramSocket(3000);
   byte[] buf = new byte[1024];
   //这里是用datagrampacket接受发送过来的数据,所以不需要指定IP和port
   DatagramPacket p = new DatagramPacket(buf, 1024);
   datagramSocket.receive(p);
   //这是得到接受过来的字节数组,其实就是上面的buf,也可以直接用上面的buf
   byte [] b = p.getData();
   
   //这是得到接受到的数据的真实长度
   int len = p.getLength();
   System.out.println(len);
   //这是得到发送放的IP
   String sendIP = p.getAddress().getHostAddress();
   System.out.println(sendIP);
   //这是得到发送发的端口号
   int port = p.getPort();
   System.out.println(port);
   //这是打印出接收到的数据
   System.out.println(new String(b,0, len ));
  } catch (Exception e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
 }

}

 

//注意:千万记得在测试的时候,应该首先运行接受端,然后再运行发送端

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值