首页 > 编程知识 正文

java面向对象程序代码,udp套接字编程java

时间:2023-05-05 02:09:57 阅读:58756 作者:2091

一. UDP协议发送数据:

 创建发送端socket对象 创建数据并把数据打包 调用socket对象的发送方法发送数据包 释放资源

二. UDP协议接收数据:

创建发送端socket对象(需要指定端口)创建一个数据包(接收容器) 调用socket对象的接收方法接收数据解析数据并显示在控制台释放资源

UDP协议不需要建立连接,实例如下:

 

public class UdpServer { public static void main(String[] args) { try { DatagramSocket datagramSocket = new DatagramSocket(10000); byte[] buf = new byte[1024]; DatagramPacket datagramPacket = new DatagramPacket(buf, buf.length); while (true) { datagramSocket.receive(datagramPacket); System.out.println("ip:" + datagramPacket.getAddress().getHostAddress()); System.out.println("接收信息:" + new String(datagramPacket.getData(), 0, datagramPacket.getLength())); } } catch (SocketException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } }}public class UdpClient { public static void main(String[] args) { try { DatagramSocket datagramSocket = new DatagramSocket(); BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); System.out.println("请输入:"); String line = null; while ((line = reader.readLine()) != null) { byte[] bytes = line.getBytes(); DatagramPacket datagramPacket = new DatagramPacket(bytes, bytes.length, InetAddress.getByName("127.0.0.1"), 10000); // 发送数据 datagramSocket.send(datagramPacket); datagramSocket.close(); } } catch (UnknownHostException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } }} public class UdpUtil { public DatagramSocket socketServer = null; private String ip; private int serverPort; public UdpUtil() { } public UdpUtil(int serverPort) { this.serverPort = serverPort; } public UdpUtil(String ip, int serverPort) { this.ip = ip; this.serverPort = serverPort; } public void connect() throws Exception { try { if (socketServer != null) { socketServer.close(); } socketServer = new DatagramSocket(serverPort); socketServer.setReceiveBufferSize(1024 * 200); System.out.println("UDPServer connect success."); } catch (Exception e) { if (socketServer != null) { socketServer.close(); socketServer = null; } throw new Exception("Connect failed. " + e.getMessage()); } } public void connect(int port) throws Exception { try { if (socketServer != null) { socketServer.close(); } socketServer = new DatagramSocket(port); socketServer.setReceiveBufferSize(1024 * 200); System.out.println("UDPServer connect success."); } catch (SocketException e) { if (socketServer != null) { socketServer.close(); socketServer = null; } throw new Exception("Connect failed." + e.getMessage()); } } public DatagramPacket collectDatagramPacket(int dataLength) throws IOException { byte[] data = new byte[dataLength]; DatagramPacket dPacket = new DatagramPacket(data, dataLength); socketServer.receive(dPacket); return dPacket; } public byte[] collect(int dataLength) throws IOException { byte[] data = new byte[dataLength]; DatagramPacket dPacket = new DatagramPacket(data, dataLength); socketServer.receive(dPacket); return data; } public byte[] collect(int dataLength, String ip1, String ip2) throws Exception { byte[] data = new byte[dataLength]; DatagramPacket dPacket = new DatagramPacket(data, dataLength); socketServer.receive(dPacket); if (ip1 != null || ip2 != null) { if (dPacket.getAddress().getHostAddress().equals(ip1) || dPacket.getAddress().getHostAddress().equals(ip2)) { return data; } else { return null; } } else { return data; } } public void send(DatagramPacket datagramPacket) throws Exception { socketServer.send(datagramPacket); } public void send(byte[] data) throws IOException { DatagramPacket datagramPacket = new DatagramPacket(data, data.length, InetAddress.getByName(ip), serverPort); socketServer.send(datagramPacket); }}

 

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。