UDP通信程序
按照下面的要求实现程序: 1、UDP发送数据:数据来自于键盘录入,知道输入的数据是end,发送数据结束 2、UDP接收数据:因为接收端不知道发送端什么时候停止发送,故采用死循环接收
如何启动程序:先启动接收端,再启动发送端,注意启动之后就别去关闭了,最后不想用了再结束
小提示:可以开一个接收端,多个发送端。那个接收端就相当于是公众的聊天室,多个发送端就相当于不同的人进行聊天
UDP通信程序的练习
xxxxxxxxxx
package 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();
}
}
xxxxxxxxxx
package 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()));//把得到的数据转换成字符串型
}
//注意:因为我们需要接收端保持一直接收数据的状态,所以就不用进行关闭接收端操作了
}
}