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. }

测试运行:

  

网络编程初探--使用UDP协议的简易聊天室的更多相关文章

  1. 计算机网络课设之基于UDP协议的简易聊天机器人

    前言:2017年6月份计算机网络的课设任务,在同学的帮助和自学下基本搞懂了,基于UDP协议的基本聊天的实现方法.实现起来很简单,原理也很简单,主要是由于老师必须要求使用C语言来写,所以特别麻烦,而且C ...

  2. 网络编程4之UDP协议

    一.定义 UDP 是User Datagram Protocol的简称, 中文名是用户数据报协议,是OSI(Open System Interconnection,开放式系统互联) 参考模型中一种[无 ...

  3. python 网络编程 tcp和udp 协议

    1. 网络通信协议 osi七层,tcp\ip五层 tcp\ip五层 arp协议:通过IP地址找到mac地址 2.tcp和udp的区别 tcp协议:面向连接,消息可靠,相对udp来讲,传输速度慢,消息是 ...

  4. 网络编程之基于UDP协议的套接字编程、基于socketserver实现并发的socket

    目录 基于UDP协议的套接字编程 UDP套接字简单示例 服务端 客户端 基于socketserver实现并发的socket 基于TCP协议 server类 request类 继承关系 服务端 客户端1 ...

  5. python 之 网络编程(基于UDP协议的套接字通信)

    8.5 基于UDP协议的套接字通信 UDP协议:数据报协议 特点:无连接,一发对应一收,先启动哪一端都不会报错 优点:发送效率高,但有效传输的数据量最多为500bytes 缺点:不可靠:发送数据,无需 ...

  6. TCPIP协议编程:基于UDP协议的局域网聊天工具的研发

    任务目标 聊天器采用客户端/服务器(C/S)模式: 客户端利用UDP与服务器相连,客户端与客户端之间通过UDP相互通信: 服务器端具有服务器端口设置维护客户端个人信息,记录客户端状态,分配账号等: 客 ...

  7. Linux 网络编程五(UDP协议)

    UDP和TCP的对比 --UDP处理的细节比TCP少. --UDP不能保证消息被传送到目的地. --UDP不能保证数据包的传递顺序. --TCP处理UDP不处理的细节. --TCP是面向连接的协议 - ...

  8. Linux网络编程5——使用UDP协议实现群聊

    引言 本文实现的功能类似于我之前所写的一篇博文(Linux之select系统调用_2),区别在于进程之间的通信方式有所不同.之前的文章中,我所使用的是管道,而本文我将会使用socket接口. 需求 客 ...

  9. 网络编程应用:基于UDP协议【实现聊天程序】--练习

    要求: 使用UDP协议实现一个聊天程序 代码: 发送端: package UDP聊天程序; import java.io.IOException; import java.net.DatagramPa ...

随机推荐

  1. (转)C#制作一个消息拦截器

    首先,我们先要制作一个自定义Attribute,让他可以具有上下文读取功能,所以我们这个Attribute类要同时继承Attribute和IContextAttribute. 接口IContextAt ...

  2. SpringBoot读取war包jar包Resource资源文件解决办法

    SpringBoot读取war包jar包Resource资源文件解决办法 场景描述 在开发过程中我们经常会碰到要在代码中获取资源文件的情况,而我在最近在SpringBoot项目中时碰到一个问题,就是在 ...

  3. ISO 8859-1 对照表 (扩展ASCII码表)

    1. 0---127 是ASCII码 2.128--255 加了一些特殊符号 DEC OCT HEX BIN Symbol HTML Number HTML Name Description 128 ...

  4. mac外接显示器 双屏同时滑动问题

    问题:mac pro 外接一个显示器,用四个手指横向切换屏幕的时候,外接的显示器也一起跟着动了   解决:      

  5. ACM-ICPC Beijing Online A The Book List

    比赛的时候一眼就看出是字典树+DFS了,然而这题题意比较难理解,还有不少WA点.所以很快敲完之后和队友反复斟酌题意,修改代码.结果还是交了3发WA.最后猜测目录和书在同一个母目录域下同名是不同的,增加 ...

  6. VS2013/2015 html 设计视图窗口

  7. Leetcode 82

    有个错误就是member access within null pointer of type 'struct ListNode' 其实就是判断了指针是否异常了,比如NULL->next之类.要 ...

  8. textBaseline

    <!DOCTYPE html><html><body> <canvas id="myCanvas" width="400&quo ...

  9. app.jsNodejs启动测试服务

    'use strict'; var express = require('express');var app = express('');var fs = require('fs'); app.get ...

  10. 通过url获取参数信息

    运行结果如下: <!DOCTYPE html><html> <head> <meta charset="UTF-8"> <ti ...