java网络编程---udp

/**
 * 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();
	}
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值