java使用udp协议实现不同ip之间的通讯
2.这是一个封装好的工具类用来收发
public class UDPUtils { /** * 向目标ip下的端口发送数据 * @param ip 目标Ip * @param port 目标端口 * @param data 要发生的内容 */ public static void send(String ip,int port,String data){ try { //实列化套接字 DatagramSocket datagramSocket=new DatagramSocket(); //指定数据要发送的目的ip,和所在ip的端口(接受时监听这个端口) InetAddress destination=InetAddress.getByName(ip); DatagramPacket datagramPacket=new DatagramPacket(data.getBytes(),data.getBytes().length,destination,port); datagramSocket.send(datagramPacket); } catch (SocketException e) { e.printStackTrace(); } catch (UnknownHostException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } /** * 被动接受发送的数据 * @param port 监听收数据的端口 * @return */ public static String receive(int port){ String data=null; try { //在本机上监视这个port端口 DatagramSocket datagramSocket=new DatagramSocket(port); //定义接受数据的包 byte[] buf=new byte[1024]; DatagramPacket datagramPacket=new DatagramPacket(buf,0,buf.length); //接受到次包 datagramSocket.receive(datagramPacket); //从这个包中取出数据 data=new String(datagramPacket.getData(),0,datagramPacket.getLength()); } catch (SocketException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return data; } }
3.测试 3.1先启动接受数据 3.2在启动发送数据 接受数成功 结尾:可能的错误:端口号占用,ip ping不通 使用场景:我们可以把他放到线程的死循环中去监听端口,或发送数据。
上一篇:
Python 安装包管理工具 pip
下一篇:
java对集合的分页工具类