您的位置:首页 > 理论基础 > 计算机网络

java网络编程---udp

2014-01-08 18:13 323 查看
/**
 * udp是面向无连接的,先运行哪端都可以!
 * 为了能看到数据,先运行接收端UdpReceive
 */
import java.net.*;

public class UdpReceive {

	public static void main(String[] args) throws Exception {

		DatagramSocket ds = new DatagramSocket(8888);
		
		while (true) {
			
			byte[] buf = new byte[1024];
			
			DatagramPacket dp = new DatagramPacket(buf, 0, buf.length);
			ds.receive(dp); // 阻塞式方法,没数据就一直等待...

			// 从数据包中获取数据
			String ip = dp.getAddress().getHostAddress();
			int port = dp.getPort();
			String data = new String(dp.getData(), 0, dp.getLength());

			System.out.println("ip = " + ip);
			System.out.println("port = " + port);
			System.out.println("data = " + data);
			System.out.println("------------------------");
		}

		// ds.close();
	}
}
import java.io.*;
import java.net.*;

public class UdpSend {

	public static void main(String[] args) throws Exception {

		// 创建udp服务
		DatagramSocket ds = new DatagramSocket(9999);	//给发送端指定一个标识--端口号

		// 确定数据并封装成数据包
//		byte[] data = "hello world".getBytes();
		
		//使用键盘录入数据
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		
		String line = "";
		while((line = br.readLine()) != null){
			byte[] data = line.getBytes();
			
			DatagramPacket dp = new DatagramPacket(data, data.length,
					InetAddress.getByName("127.0.0.1"), 8888);
			// 通过socket服务,将已有的数据包发送出去,通过send方法
			ds.send(dp);
			
			if("886".equals(line)){
				break;
			}
		}
		// 关闭资源
		ds.close();
	}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: