欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

基于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 数

相关标签: socket UDP