基于UDP协议的Socket简单实例
程序员文章站
2022-06-25 17:57:25
...
基于UDP协议的Socket简单实例
使用两个类 DatagramPacket -- 表示数据报包
DatagramSocket -- 表示进行端到端的通信类
服务端四步
1、定义服务端IP 端口 数据内容
2、创建DategramPacket 数据包对象 将其包含数据内容
3、创建DategramSocket 对象
4、socket.send() 进行发送;
UdpSocketServer 代码
package com.chen.study.socket.socketServer; import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.SocketException; public class UdpSocketServer { private static int port = 12000; /** * UDPsocket服务 */ public static void UdpSocketServer(){ try { //1.创建服务端口 DatagramSocket socket = new DatagramSocket(port); System.out.println("UDPsocket已经启动....."); //2.创建数据报,用于接收客户端的发送数据 byte[] data = new byte[1024]; DatagramPacket packet = new DatagramPacket(data, data.length); //3.接受客户端请求 socket.receive(packet);//此方法在接收到数据前一直处于阻塞状态 //4.读取数据 String info = new String(data, 0,packet.getLength()); System.out.println("我是服务器,客户端说:"+info); } catch (SocketException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public static void main(String[] args) { UdpSocketServer(); } }
客户端
1.获取 IP 地址与 端口号 InetAddress inetaddress
2.创建数据报
3.创建Socket
4.发送 Socket.send(DatagramPacket packet)
客户端代码 写道
package com.chen.study.socket.socketServer; import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; import java.net.SocketException; public class UdpSocketClient { private static int port = 12000; private static String ip = "192.168.119.35"; public static void UdpSocketClient(){ try { byte[] data = "服务端你好!".getBytes(); System.out.println("客户端发送:"+"服务端你好!"); InetAddress inetaddress = InetAddress.getByName(ip); //创建数据报 DatagramPacket packet = new DatagramPacket(data, data.length, inetaddress, port); //创建Socket DatagramSocket socket = new DatagramSocket(); socket.send(packet); } catch (SocketException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub UdpSocketClient(); } }
附:
String info = new String (date,0,packet.getLength());
String构造方法
public String(byte[] bytes,
int offset,
int length)
bytes - 要解码为字符的 byte
offset - 要解码的第一个 byte 的索引
length - 要解码的 byte 数
推荐阅读
-
基于PHP Socket配置以及实例的详细介绍
-
基于ECMAScript6即ECMAScript2015的javascriptclass类封装的简单使用实例讲解
-
原生js基于canvas实现一个简单的前端截图工具代码实例
-
基于wxpython开发的简单gui计算器实例
-
Python基于socket实现简单的即时通讯功能示例
-
详解Android 基于TCP和UDP协议的Socket通信
-
Java开发笔记(一百一十六)采用UDP协议的Socket通信
-
基于PHP+Mysql简单实现了图书购物车系统的实例详解
-
C#的Socket实现UDP协议通信示例代码
-
python简单实现基于SSL的IRC bot实例