网络编程初探--使用UDP协议的简易聊天室

 

UDP是一种无连接的传输层协议,提供快速不可靠的服务。

一、发送端
* 创建UDP发送端
* 步骤:
* 1.建立UDP的Socket服务
* 2.将要发送的数据封装到数据包中
* 3.通过UDP的socket服务将数据包发送出去
* 4.关闭socket服务

 1 public class UDPSendDemo2 {
 2 
 3     public static void main(String[] args) throws IOException {
 4         System.out.println("发送端启动了...");
 5         
 6         DatagramSocket ds=new DatagramSocket();//建立socket服务
 7         BufferedReader br=new BufferedReader(new InputStreamReader(System.in));//读取键盘录入
 8         String line=null;
 9         while((line=br.readLine())!=null){
10             byte[] buf=line.getBytes();
11             DatagramPacket dp=new DatagramPacket(buf, buf.length,InetAddress.getByName("wsw"),10100);//封装数据包
12             ds.send(dp);//发送数据
13             
14             if("over".equals(line))//当录入over时,关闭发送端
15                 break;
16         }
17         ds.close();//关闭资源
18         }
19 }

 

二、接收端

* 建立UDP接收端
* 步骤:
* 1.建立UDP的Socket服务,因为要接收数据,必须明确接收的端口号
* 2.创建数据包,用来存储接收到的数据,方便用数据包对象的方法解析这些数据
* 3.使用socket服务的receive方法接收这些数据
* 4.通过数据包中的方法解析这些数据
* 5.关闭资源

 1 public class UDPReceDemo2 {
 2 
 3     public static void main(String[] args) throws IOException {
 4         System.out.println("接收端启动了...");
 5         
 6         while(true){//不停接收数据
 7             DatagramSocket ds=new DatagramSocket(10100);
 8             byte[] buf=new byte[1024];
 9             DatagramPacket dp=new DatagramPacket(buf, buf.length);
10             ds.receive(dp);//接收数据,是阻塞式方法
11             
12             //解析数据 源ip地址,源端口号,发送的内容
13             String ip=dp.getAddress().getHostAddress();
14             int port=dp.getPort();
15             String text=new String(buf,0,dp.getLength());
16             System.out.println(ip+":"+port+":"+text);
17             if(text.equals("over")){
18                 System.out.println(ip+"...已经离开聊天室");
19             }
20             ds.close();//关闭资源
21         }
22     }
23 }

测试运行:

  

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值