现在的位置: 首页 > 综合 > 正文

java的UDP通信

2017年11月09日 ⁄ 综合 ⁄ 共 1208字 ⁄ 字号 评论关闭

接收端

package net.udp;

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.SocketException;

public class UDPRecevie {
	public static void main(String[] args) throws IOException {
		/*
		 * 1.建立服务
		 * 2.创建数据包,用于接受数据
		 * 3.使用socket服务的方法将接受到的数据放在数据包中
		 * 4.通过数据包方法对象解析数据,如端口等
		 * 5.关闭资源
		 */
		System.out.println("recevice...");
		//明确端口号
		DatagramSocket ds = new DatagramSocket(10000);
		
		byte[] buf = new byte[1024];
		DatagramPacket dp = new DatagramPacket(buf, buf.length);
		
		ds.receive(dp);   //阻塞
		
		//4
		String ip = dp.getAddress().getHostAddress();
		int port = dp.getPort();
		String text = new String(dp.getData(), 0, dp.getLength());
		System.out.println(ip+":"+port+":"+text);
		
		ds.close();
	}
}

发送端

package net.udp;

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;
import java.net.UnknownHostException;

public class UDPSend {

public static void main(String[] args) throws IOException {
/*
* 1.建立udp的socket服务
* 2.封装数据
* 3.将包发送过去
* 4.关闭socket
*/
System.out.println("send...");

//指定
DatagramSocket ds = new DatagramSocket(8888);

String str = " udp data ......";

byte[] buf = str.getBytes();

DatagramPacket dp = new DatagramPacket(buf, buf.length, InetAddress.getByName("10.1.35.73"), 10000);

//3
ds.send(dp);

//4
ds.close();
}

}

【上篇】
【下篇】

抱歉!评论已关闭.