udp聊天窗口(控制台方式)
package com.softeem.net.udp; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; import java.net.SocketException; //此程序为对等客户端,通信双方都使用此程序,双方将IP设为对方即可 //此程序只能实现单一对话,且只能挡收到对方信息时才能回复信息 public class FeiQSender { public static void main(String[] args) throws IOException { String ip = "192.168.4.254"; //创建基于UDP协议的网络通道 DatagramSocket ds = new DatagramSocket(8081); //获取标准输入流并包装为缓冲流 BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); //初始化一个udp包装器dp DatagramPacket dp = null; //初始化一个空的byte数组 byte[] b = null; //初始化一个String类型的msg用来存储输入的信息 String msg = ""; //whlie中将缓冲流中的数据读取并写入msg,并与字符串“quit”对比,若读取的字符串为quit,则循环结束 while(!(msg = br.readLine()).equals("quit")){ //将读取的字符串转换为字节数组 b = msg.getBytes(); //将字节数组包装为udp数据包并存放在数据包对象dp中 dp = new DatagramPacket(b, 0, b.length, InetAddress.getByName(ip), 8081); //将数据包发送至udp协议网络通道 ds.send(dp); //获取udp通道中的数据包 ds.receive(dp); //信息解包 msg = new String(dp.getData(),0,dp.getLength()); //打印控制台 System.out.println(dp.getAddress().getHostAddress()+":"+msg); } } }