UDP基础(二)

使用键盘录入的方式作为数据的发送来源,接收端则使用开启接收数据。

发送端

/*
 * 要发送的数据来自于键盘录入,所以涉及到IO操作
 * */

package com.test.udp;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;

public class UDPSenderKeyboard
{
	public static void main(String[] args)throws Exception
	{
		//1. 先创建Socket服务
		DatagramSocket socket = new DatagramSocket();
		
		// 2. 由于要接收来自于键盘录入的数据,使用InputStream类。
		//操作文本时字符流要比字节流的操作速度快,这里使用了字符流。
		//为了提高读取速度,使用BufferedReader类来装饰,使用InputStreamReader作为转换流接收字节流
		BufferedReader bufr = 
				new BufferedReader(new InputStreamReader(System.in));
		//3. 将键盘录入的数据读取出来,并封装到发送包中
		String line = null;
		while((line = bufr.readLine())!= null)
		{			
			//由于键盘录入不能停止,这里要指定何时停止读取
			if("886".equals(line))
				break;	
			//否则就要将读取的内容转换为字节数组			
			byte[] buf = line.getBytes();
			//将数据封装,InetAddress.getByName("192.168.1.255")也可以使用局域网内广播地址
			DatagramPacket packet = new DatagramPacket(buf, buf.length,InetAddress.getByName("192.168.1.255"),10003);
			//发送数据
			socket.send(packet);
		}
		socket.close();
	}
} 

接收端

package com.test.udp;

import java.net.DatagramPacket;
import java.net.DatagramSocket;

public class UDPReceiverKeyboard
{
	public static void main(String[] args)throws Exception
	{
		DatagramSocket socket = new DatagramSocket(10003);
		//要让接收端不关闭,不断接收发送过来的数据,可以使用while循环方法
		while(true)
		{
			byte[] buf = new byte[1024];
			DatagramPacket packet = new DatagramPacket(buf,buf.length);
			socket.receive(packet);
			//获取发送端的IP和数据
			String ip = packet.getAddress().getHostAddress();
			String data = new String(packet.getData(),0, packet.getLength());
			//将接收到的数据打印在控制台上
			System.out.println(ip+": "+data);
		}	
	}
}


 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值