`

基于UDP协议的Socket简单实例

阅读更多

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

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics