java学*之路??基于UDP的Socket网络通信实例

发布时间:2021-07-25 05:58:32

1:?UDP协议的工作原理

UDP协议是一个面向无连接的协议。其连接的建立不必像TCP那样需要服务器端侦听,也不需要有客户机请求连接,属于一种“强制”性的网络连接。UDP提供一对一或一对多的、无连接的数据报服务。该服务对消息中传输的数据提供不可靠的、最大努力的传送,这意味着它不保证数据的到达,也不保证所传送的数据报的顺序是否正确,UDP不重新传输丢失的数据。其主要工作是:将应用程序传输过来的数据分块交给网络层,确认接受到分组信息。

尽管UDP无法像TCP一样提供可靠的数据传输,但UDP并不比TCP缺乏优越性。UDP在传输效率方面比TCP要高一些,而且许多应用程序并不需要保证严格的传输可靠性,比如视频会议系统等,需要实时的交互,但并不要求音频视频的绝对正确。

使用UDP协议传输数据时,首先设置客户计算机的local Port(本地端E1)属性,而作为服务器的计算机只需要设置RemoterHost(远程主机)属性为客户计算机的IP地址或域名即可,并将其Remote Port属性设置为客户计算机上的Local Port属性。使用UDP端口号时,端口提供了用于发送消息的位黄,每个端口由一个唯一的编号来标识。当应用程序向另一台计算机发送数据时,UDP生成一个数据头。包括源端口,这些端口提供送达信息所需要的地址。UDP协议还为数据和数据头计算出求和检验的值,在目标计算机中,数据包被传递至UDP协议程序并送到目的地端口。

?2:UDP套接字的通信过程

Java.net中提供了两个类DatagramSoeket和DatagramPacket用来支持数据报通信。Datagramsoc kel用来在程序之间建立传送数据报的通信连接.是数据报通信中的Socket。在数据报实现C/S通信程序时,无论在客户端还是服务器端,都要首先建立一个DatagramSoeket对象。用来表示数据报通信的端点,应用程序通过Socket接收或发送数据报。

DatagramPaeket则用来表示一个数据报,它是传输数据的载体,封装了数据、数据长度、数据报地址等信息。采用UDP套接字方式实现C/s的通信程序由客户端和服务器端两部分组成。服务器进程依次按以下步骤进行:1)调用Socket0创建一个数据报套接字;2)调用bind0把服务器地址绑定在该套接字上;3)调用recvform0等待客户进程发来的请求,服务器此时处于无限循环状态;4)服务进程接收到客户进程所发来的数据报后,进行处理,调用sendt00将处理结果返回给客户进程,返回状态31.继续监听;5)服务进程调用close0撤消套接字,终止服务。客户进程则按以下步骤进行:1)调用Socket 0创建一个数据流套接字;2)调用sendto 0向服务器进程发送数据报;3)调用reevfrom0等待服务器进程返同该处理结果;4)客户进程凋用closeO撤消套接字。
以下是基于UDP的Socket网络通信实例代码:


1:建立一个UDP类


package com.lcq.network;

/**
*
* 类名:UdpTest1
* 功能:建立DatagramSocket类,通过发送和接收数据报包来实现网络通信
* 时间:
* 作者:lcq
* 版本:
*
*/

import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;

public class UdpTest1 {

/**
* @param args
* @throws Exception
*/
public static void main(String[] args) throws Exception {

//DatagramSocket此类表示用来发送和接收数据报包的套接字。
DatagramSocket ds = new DatagramSocket();

String str = "Hello World";
//DatagramPacket此类表示数据报包。
DatagramPacket dp = new DatagramPacket(str.getBytes(), str.length(),
InetAddress.getByName("localhost"), 7000);

//发送数据报
ds.send(dp);

byte[] by = new byte[1000];
// 构造 DatagramPacket,用来接收长度为 length 的数据包。
DatagramPacket dp2 = new DatagramPacket(by,100);
ds.receive(dp2);

System.out.println(new String(by,0,dp2.getLength()));

ds.close();

}

}


2:在建立一个UDP类


package com.lcq.network;

/**
*
* 类名:UdpTest2
* 功能:建立DatagramSocket类,通过发送和接收数据报包来实现网络通信
* 时间:
* 作者:lcq
* 版本:
*
*/

import java.net.DatagramPacket;
import java.net.DatagramSocket;

public class UdpTest2 {
public static void main(String[] args) throws Exception {

//DatagramSocket此类表示用来发送和接收数据报包的套接字。
DatagramSocket ds = new DatagramSocket(7000);

byte[] by = new byte[1000];
// 构造 DatagramPacket,用来接收长度为 length 的数据包。
DatagramPacket dp = new DatagramPacket(by,1000);
ds.receive(dp);

System.out.println(new String(by,0,dp.getLength()));

String str = "welcome";
//DatagramPacket此类表示数据报包。 dp.getAddress()得到接收到的DatagramPacket的主机的地址
DatagramPacket dp2 = new DatagramPacket(str.getBytes(), str.length(),
dp.getAddress(), dp.getPort());

//发送数据报
ds.send(dp2);

ds.close();
}

}


运行时先启动第二个类,再启动第一个类。实现了两个对象的通信。

相关文档

  • (2.1.4.1)刨根问底HTTP与WebSocket的关系
  • 小学三年级上册期末评语
  • 日常生活常用法语学习句子64句
  • 世界上寿命最长的甲鱼
  • 小样本点云深度学习库_2019-01-07-小样本深度学习
  • 2021年父亲节暖心文案
  • 2017年文科二本大学全国排名
  • 【转载】安卓获取屏幕大小包含状态栏、不包含状态栏
  • 浅谈服装销售心得
  • 锦里小吃街必吃美食
  • 早产(32周)一对双胞胎男孩怎么护理 流产后出血三星期注意什么
  • PETS4考试写作精选短语1
  • 小学生绿的散文3篇
  • 汽车钣金有哪些理论知识学习
  • 关于过生日作文500字集合九篇
  • 苹果7微信前置摄像头打不开
  • 攻城掠地159副本怎么过
  • 去鸡皮肤的方法
  • mysql 没有rownum 又想查出来内部id
  • 无参构造方法的作用
  • 股票账户用途有哪些
  • c# 自定义类数组实例化与初始化
  • 春天赏花发朋友圈的句子
  • 经典品牌服装广告语
  • 初一录取通知书格式
  • 魅族手机解析包一直错误
  • 诗经的文学常识颂分
  • 怎么把快手删了
  • 关于个人的自我介绍
  • 2021写元旦的作文200字多篇
  • 猜你喜欢

  • 零售药店管理制度汇总
  • 八年级英语(上)期中学业水*检测试卷
  • DSP结构与测试方法研究
  • 2018-2019学年福建省龙岩市上杭县第一中学等六校高二下学期期中考试地理试题 Word版
  • [精品课件]201x届高三英语二轮复* 专题二 语法基础 第六讲 介词、介词短语课件
  • 以暑假生活为话题的作文600字
  • 06第五章药品管理立法 PPT资料共122页
  • 物流系统控制培训课程(PPT 42页)
  • 桐城市孔城加油站管理服务有限公司企业信用报告-天眼查
  • 往年专业技术人员继续教育-信息化建设考试题库和答案解析含具体做题方法
  • 关于回到家乡舍不得离开的诗句有哪些
  • 黑龙江2015年土地估价师《管理基础与法规》:耕地占用税模拟试题
  • 2011年全国各地中考数学真题分类汇编:第29章锐角三角函数与特殊角
  • 广东省深圳市2015年高三第一次调研考试理综化学试题(一模)
  • 九年级(初三)化学 第二节物质组成的表示教案1.doc
  • 一种低抖动快锁定的时钟数据恢复电路设计
  • 有关离别的说说心情句子
  • 2020年两会学习体会:从‘治安’到‘管理’
  • 2012读书讲演比赛方案
  • 2017年中国烘焙专用油发展现状与市场前景分析(目录)
  • 化妆品行业策划方案51
  • 小学优秀作文素材安全你我他
  • 2019高考英语复*:语法专题 专题6 正反解读动词的时态和语态
  • 青海高原一株柳教学反思
  • 关于下雪的作文400字
  • 2019精选教育人教版八年级上册第二单元 试卷集.doc
  • 2019-2020年公务员考试备考行测《其他常识》考前练*题含答案解析(第六十四篇)[海南]
  • 浅谈如何培养低年级学生的计算能力[1]
  • 知秋初中作文
  • 四年级下册英语课件-M10 U2 Sam had lots of chocolate_|外研社(三起) (10)
  • 关于项目404解决方法:前提条件:项目路径都是正确的
  • 初一叙事作文《黯蓝(三)》200字(共7页PPT)
  • 树莓派 按键程序 附代码
  • 课外文言文阅读练习题
  • 基于java的在线作业提交点评系统设计与实现
  • 健康之路颈椎保健操视频
  • 关于钓鱼岛事件议论文作文
  • 我和足球的故事作文
  • 面对一朵花作文【初中初二800字】
  • 初二地理复*学案 (1)
  • 孕妇不能吃的中药
  • 自驾游汽车租赁合同
  • 电脑版