UDP通信程序
按照下面的要求实现程序: 1、UDP发送数据:数据来自于键盘录入,知道输入的数据是end,发送数据结束 2、UDP接收数据:因为接收端不知道发送端什么时候停止发送,故采用死循环接收
如何启动程序:先启动接收端,再启动发送端,注意启动之后就别去关闭了,最后不想用了再结束
小提示:可以开一个接收端,多个发送端。那个接收端就相当于是公众的聊天室,多个发送端就相当于不同的人进行聊天
UDP通信程序的练习
xxxxxxxxxxpackage ch22;
import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.net.DatagramPacket;import java.net.DatagramSocket;import java.net.Inet4Address;import java.net.SocketException;
public class a_8_1测试_发送 {
public static void main(String[] args) throws IOException {
//无参构造方法创建发送端的Socket对象(DatagramSocket) DatagramSocket ds = new DatagramSocket();
//自己封装键盘录入数据 BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String line; while((line=br.readLine())!=null){ if("end".equals(line)){ break; }
//创建数据,并把数据打包 byte[] bys = line.getBytes();//把键盘录入的数据转成字节数组 DatagramPacket dp = new DatagramPacket(bys,bys.length, Inet4Address.getByName("10.99.20.3"),2233);
//调用DatagramSocket对象的方法发送数据 ds.send(dp);
}
//关闭发送端 ds.close();
}}xxxxxxxxxxpackage ch22;
import java.io.IOException;import java.io.PrintStream;import java.net.DatagramPacket;import java.net.DatagramSocket;import java.net.SocketException;
public class a_8_2测试_接收 {
public static void main(String[] args) throws IOException {
//创建接收端的Socket对象(DatagramSocket) DatagramSocket ds = new DatagramSocket(2233); while(true) { //创建一个数据包,用于接收数据 byte[] bys = new byte[1024]; DatagramPacket dp = new DatagramPacket(bys, bys.length);
//调用DatagramSocket对象的方法接收数据 ds.receive(dp);
//解析数据包,并把数据在控制台显示 System.out.println("接收到的数据是:" + new String(dp.getData(), 0, dp.getLength()));//把得到的数据转换成字符串型 }
//注意:因为我们需要接收端保持一直接收数据的状态,所以就不用进行关闭接收端操作了
}}