java Socket UDP实例详解

发布时间 - 2026-01-10 22:49:59    点击率:

UDP编程示例

服务器端:

package socket; 
 
import java.io.IOException; 
import java.net.DatagramPacket; 
import java.net.DatagramSocket; 
import java.net.SocketException; 
 
public class UDPServer { 
 
   
  public static void main(String[] args) throws IOException { 
    byte[] buf = new byte[1024]; 
    DatagramPacket dp = new DatagramPacket(buf, buf.length);//声明一个用来接收数据的“包裹” 
    DatagramSocket ds = new DatagramSocket(5678);//指定的是UDP中的端口号5678,在TCP中,还有另外一个端口号为5678的端口 
    while(true){ 
      ds.receive(dp); //阻塞式的 
      System.out.println(new String(buf,0,dp.getLength()));//dp中获取的数据的长度 
    } 
 
  } 
 
} 

客户端:

package socket; 
 
import java.io.IOException; 
import java.net.DatagramPacket; 
import java.net.DatagramSocket; 
import java.net.InetSocketAddress; 
import java.net.SocketException; 
 
public class UDPClient { 
 
  public static void main(String[] args) throws IOException { 
    byte[] buf = new String("Hello").getBytes(); 
    //UDP是无连接的,所以要在发送的数据包裹中指定要发送到的ip:port 
    DatagramPacket dp = new DatagramPacket(buf, buf.length, new InetSocketAddress("127.0.0.1", 5678)); 
    DatagramSocket ds = new DatagramSocket(9999); //指明发送端的端口号 
    ds.send(dp); 
    ds.close(); 
  } 
 
} 

说明:

1. 严格意义上来讲,UDP没有server和client之分,不像TCP中有ServerSocket和Socket,UDP中只有DatagramSocket。

2. UDP和TCP的端口是分开的,例如UDP有一个端口号为5678的端口,TCP也有一个端口号为5678的端口。

3. UDP是无连接的,所以要在发送的数据包裹中指定要发送到的ip:port。

4. 如果要发送long、int等类型的数据,则需要使用到ByteArrayOutputStream、DataOutputStream、ByteArrayInputStream、ByteArrayInputStream流类型,如下:

服务器端:

package socket; 
 
import java.io.ByteArrayInputStream; 
import java.io.ByteArrayOutputStream; 
import java.io.DataInputStream; 
import java.io.DataOutputStream; 
import java.io.IOException; 
import java.net.DatagramPacket; 
import java.net.DatagramSocket; 
import java.net.SocketException; 
 
public class UDPServer { 
 
   
  public static void main(String[] args) throws IOException { 
    byte[] buf = new byte[1024]; 
    DatagramPacket dp = new DatagramPacket(buf, buf.length); 
    DatagramSocket ds = new DatagramSocket(5678); 
    ByteArrayInputStream bais = null; 
    DataInputStream dos = null; 
    while(true){ 
      ds.receive(dp);  
      bais = new ByteArrayInputStream(buf); 
      dos = new DataInputStream(bais); 
      System.out.println(dos.readLong()); 
    } 
 
  } 
 
} 

客户端:

package socket; 
 
import java.io.ByteArrayOutputStream; 
import java.io.DataOutputStream; 
import java.io.IOException; 
import java.net.DatagramPacket; 
import java.net.DatagramSocket; 
import java.net.InetSocketAddress; 
import java.net.SocketException; 
 
public class UDPClient { 
 
  public static void main(String[] args) throws IOException { 
    byte[] buf = null; 
    long l = 100000L; 
    ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
    DataOutputStream dos = new DataOutputStream(baos); 
    dos.writeLong(l); 
    buf = baos.toByteArray(); 
    DatagramPacket dp = new DatagramPacket(buf, buf.length, new InetSocketAddress("127.0.0.1", 5678)); 
    DatagramSocket ds = new DatagramSocket(9999);  
    ds.send(dp); 
    ds.close(); 


        dos.close(); 
  } 
 
} 

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!


# java  # Socket  # UDP  # UDP详细介绍  # UDP实例代码  # java实现TCP socket和UDP socket的实例  # java实现基于UDP协议网络Socket编程(C/S通信)  # Java Socket编程实例(五)- NIO UDP实践  # Java Socket编程实例(二)- UDP基本使用  # Java基于socket服务实现UDP协议的方法  # Java Socket实现UDP编程浅析  # 端口号  # 要在  # 发送到  # 的是  # 客户端  # 也有  # 中有  # 希望能  # 不像  # 另外一个  # 谢谢大家  # 之分  # 要使  # 有一个  # 则需  # 意义上  # String  # args  # main  # true 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 如何用已有域名快速搭建网站?  网站制作报价单模板图片,小松挖机官方网站报价?  ChatGPT回答中断怎么办 引导AI继续输出完整内容的方法  Laravel怎么解决跨域问题_Laravel配置CORS跨域访问  Laravel怎么使用artisan命令缓存配置和视图  智能起名网站制作软件有哪些,制作logo的软件?  Laravel怎么使用Session存储数据_Laravel会话管理与自定义驱动配置【详解】  如何快速搭建高效香港服务器网站?  Laravel如何使用Seeder填充数据_Laravel模型工厂Factory批量生成测试数据【方法】  JS中页面与页面之间超链接跳转中文乱码问题的解决办法  javascript中对象的定义、使用以及对象和原型链操作小结  Laravel怎么集成Vue.js_Laravel Mix配置Vue开发环境  如何在阿里云域名上完成建站全流程?  Python数据仓库与ETL构建实战_Airflow调度流程详解  如何快速搭建自助建站会员专属系统?  如何为不同团队 ID 动态生成多个独立按钮  微信小程序 require机制详解及实例代码  香港服务器网站推广:SEO优化与外贸独立站搭建策略  阿里云高弹*务器配置方案|支持分布式架构与多节点部署  怎么制作网站设计模板图片,有电商商品详情页面的免费模板素材网站推荐吗?  网站制作免费,什么网站能看正片电影?  html文件怎么打开证书错误_https协议的html打开提示不安全【指南】  Win11怎么设置虚拟桌面 Win11新建多桌面切换操作【技巧】  Laravel如何使用Contracts(契约)进行编程_Laravel契约接口与依赖反转  如何用ChatGPT准备面试 模拟面试问答与职场话术练习教程  Laravel Vite是做什么的_Laravel前端资源打包工具Vite配置与使用  Laravel API资源类怎么用_Laravel API Resource数据转换  胶州企业网站制作公司,青岛石头网络科技有限公司怎么样?  昵图网官网入口 昵图网素材平台官方入口  高端网站建设与定制开发一站式解决方案 中企动力  悟空浏览器如何设置小说背景色_悟空浏览器背景色设置【方法】  node.js报错:Cannot find module 'ejs'的解决办法  利用vue写todolist单页应用  Laravel Facade的原理是什么_深入理解Laravel门面及其工作机制  Laravel如何实现多语言支持_Laravel本地化与国际化(i18n)配置教程  Laravel如何使用Passport实现OAuth2?(完整配置步骤)  EditPlus中的正则表达式实战(6)  独立制作一个网站多少钱,建立网站需要花多少钱?  如何快速搭建支持数据库操作的智能建站平台?  Windows驱动无法加载错误解决方法_驱动签名验证失败处理步骤  如何快速搭建高效简练网站?  Laravel怎么进行数据库事务处理_Laravel DB Facade事务操作确保数据一致性  Laravel如何使用Spatie Media Library_Laravel图片上传管理与缩略图生成【步骤】  Laravel如何发送邮件和通知_Laravel邮件与通知系统发送步骤  西安市网站制作公司,哪个相亲网站比较好?西安比较好的相亲网站?  简单实现jsp分页  如何用IIS7快速搭建并优化网站站点?  Laravel如何创建和注册中间件_Laravel中间件编写与应用流程  SQL查询语句优化的实用方法总结  手机网站制作平台,手机靓号代理商怎么制作属于自己的手机靓号网站?