java udp 同一个端口实现收发_Java网络编程之UDP协议

伙伴们注意了!

小编在这里给大家送上关注福利:

搜索微信公众号“速学Java”关注即可领取小编精心准备的资料一份!

今天我们来聊聊

网络编程这部分的内容

网络编程

1)计算机网络

是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统。

2)网络编程

就是用来实现网络互连的不同计算机上运行的程序间可以进行数据交换。

网络编程三要素之IP概述

每个设备在网络中的唯一标识

每台网络终端在网络中都有一个独立的地址,我们在网络中传输数据就是使用这个地址。

ipconfig:查看本机IP地址

d81ee0ffd7b5f483a392bbb308d6f4de.png

ping:测试连接

1d377f408ce9c8095ebb0ecca6f48a67.png

这个结果就表示连接成功了

本地回路地址:127.0.0.1

IPv4:4个字节组成,4个0-255组成。

一共大概42亿,30亿都在北美,亚洲4亿。2011年初已经用尽。

IPv68组,每组4个16进制数。

1a2b:0000:aaaa:0000:0000:0000:aabb:1f2f

中间的“0”可以省略~写成:

1a2b::aaaa:0000:0000:0000:aabb:1f2f

或1a2b:0000:aaaa::aabb:1f2f

或1a2b:0000:aaaa::0000:aabb:1f2f

或1a2b:0000:aaaa:0000::aabb:1f2f

网络编程三要素之端口号

每个程序在设备上的唯一标识

每个网络程序都需要绑定一个端口号,传输数据的时候除了确定发到哪台机器上,还要明确发到哪个程序。

端口号范围从0-65535

编写网络应用就需要绑定一个端口号,尽量使用1024以上的,1024以下的基本上都被系统程序占用了。

常用端口

mysql: 3306

oracle: 1521

web: 80

tomcat: 8080

网络编程三要素之协议

为计算机网络中进行数据交换而建立的规则、标准或约定的集合。

UDP

面向无连接,数据不安全,速度快。不区分客户端与服务端。

就比如我们发短信,一般就是直接把信息编好久发过去,不管那边是什么情况、能不能收到。

TCP

面向连接(三次握手),数据安全,速度略低。分为客户端和服务端。

三次握手:

客户端先向服务端发起请求, 服务端响应请求, 传输数据

就好像我们取快递的时候,先给小哥一个暗号“取快递”,小哥听到了(第一次握手)然后给你一个回应 “报一下手机号”,你听到(第二次握手)了之后就报了号码给快递小哥(第三次握手)。这样确认之后就可以把快递给你了~

Socket通信

Socket套接字概述:

网络上具有唯一标识的 IP地址 和 端口号 组合在一起才能构成唯一能识别的标识符套接字。

通信的两端都有 Socket。网络通信其实就是 Socket 间的通信。数据在两个Socket 间通过 IO流 传输。

Socket 在应用程序中创建,通过一种绑定机制与驱动程序建立关系,告诉自己所对应的 IP 和 port。

UDP传输

发送Send

总共分四步:

1)创建DatagramSocket, 随机端口号

2)创建DatagramPacket, 指定数据, 长度, 地址, 端口

3)使用DatagramSocket发送DatagramPacket

4)关闭DatagramSocket

6769a75b102656235cfd931505362e1a.png

接收Receive

总共分四步:

1)创建DatagramSocket, 指定端口号

2)创建DatagramPacket, 指定数组, 长度

3)使用DatagramSocket接收DatagramPacket

4)关闭DatagramSocket

c3da408cc678b16152bce6027a3447c8.png

效果:

c735cc3ecf845e28e0d97374d636496a.png

UDP传输多线程

发送和接收在一个窗口完成

dc142433d70f8f2c420711ecb62ee5fb.png
c4233e0dfbb5aa150df525aba1be81e8.png
906f2d37c29bb764622773c82f418525.png

那么就先到这里了

再见了

最后,想学习Java的小伙伴们!

关注“速学java”公众号就可以拿到一份我为大家准备的Java学习资料!

对Java感兴趣的小伙伴也可以加 小编V❤: suxuejava

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/502919.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

iterate mysql_ITERATE

OutOfOrderScannerNextException: was there a rpc tiaused by: java.util.concurrent.ExecutionException: org.apache.phoenix.exception.PhoenixIOException: Failed after retry of OutOfOrderScannerNextExcept...文章余二五2017-11-222749浏览量Hibernate-ORM:05.Hiberna…

java 多态_Java面向对象 —— 多态

前两天已经相继介绍了Java面向对象的三大特性之中的封装、继承,所以今天就介绍Java面向对象的三大特性的最后一项,多态~首先讲一下什么是多态,以及多态需要注意的细节 什么是多态:一个对象具备多种形态,也可以理解为事…

2023年State-of-AI-Report阅读

文章目录 1、在研究进展方面2、在行业局势方面3、在现有政策方面4、在安全问题方面研究进展行业局势现有政策安全问题 State of AI Report系列至今已经是第六个年头了 也成为了人工智能领域的风向标 这个报告是由业界领先的AI从业者撰写 除了总结过去 也会对未来发展进行很…

java a星寻路算法_用简单直白的方式讲解A星寻路算法原理

很多游戏特别是rts,rpg类游戏,都需要用到寻路。寻路算法有深度优先搜索(DFS),广度优先搜索(BFS),A星算法等,而A星算法是一种具备启发性策略的算法,效率是几种算法中最高的,因此也成为游戏中最常…

vb6 方法‘ ’作用于对象 失败_JS基础入门-对象的使用

今日背诵小纸条对象是一组属性方法的组合,其中可包含基本值、对象和函数对象的定义1 对象字面量var hero{name: ‘产品小姐姐’,age: 16,weapon: [ ‘头盔’, ‘靴子’, ‘盔甲 ],sayHi: function ( ) {console.log( this.name ’…

java接口中方法声明_java – 使用实现中声明的接口中未定义的方法

我有一个由接口定义的类public interface Test {void testMethod();}Test test new TestImpl();public class TestImpl implements Test {Overridepublic void testMethod() {//Nothing to do here}public void anotherMethod() {//I am adding this method in the implementa…

无法从套接字读取更多的数据 oracle_小伙面试时被追问数据库优化,面试前如何埋点反杀?

前言周五的早高峰, 各地软件园地铁站里中出现了不少穿着长袖加绒格子衫, 背双肩电脑包的年轻码农, 现在节气正值 [ 小雪 ] , 11月的全国性突然降温 , 让经历过996摧残的猿们一出地铁站就冻的打了个激灵 , 很庆幸的告诉大家距离放年假还剩不到 37 个工作日, 要买火车票的赶紧预约…

java随机数生成三位数_Java随机数总结

先放一道面试真题以下关于随机数的描述,正确的是:A. Matn.random() 可以生成 [ 0 , 1 ] 内的任意小数B. Random.next( 10 ) 可以生成 [ 0 , 10 ] 内的任意整数C. new java.util.Random().nextInt( 11 ) 可以生成 [ 0 , 10 ] 内的任意整数D. new java.uti…

python锁机制_python基础(锁机制,守护线程,线程队列,线程池)

一、 互斥锁(Lock)与递归锁(RLock)机制1.1 由互斥锁(Lock)产生的死锁现象:#互斥锁(死锁现象):#死锁现象:from threading importLocklockLock()lock.acquire()print(123)lock.acquire()#等待获取锁(死锁状态)print(456)lock.release()#等待释放…

java包图标是文件_关于更换.jar文件默认图标

最近写了个java程序,导出.jar文件后觉得默认图标太寒酸,想换一个自个儿喜欢的。eclipse导出.jar文件网上提供了很多很正确的方法,我也不必赘述。至于更改默认图标,网上提供的一些方法真是让人不敢恭维。部分人提供的方法是“右击-…

qlineedit限制输入数字_Excel单元格限制录入,实用小技巧

在填写资料表格的时候,为了不防止出错,会在单元格中设置一些技巧,限制对方输入内容,这样可以更好的预防输入错误。那么单元格限制输入技巧是如何实现的呢?1、限制只能录入数字比如单元格是我们要用来填写年龄数据等数字…

java二维数组 内存分配_java中二维数组内存分配

区分三种初始化方式:格式一:数据类型[][] 数组名 new 数据类型[m][n];m:表示这个二维数组有多少个一维数组。n:表示每一个一维数组的元素有多少个。//例:int arr[][]new int[3][2];如下图格式二:数据类型[][] 数组名 new 数据类…

如何在python官网下载pip_[Python]Pip的安装以及简单的使用

Pip的安装安装python以后(我的python版本是32位,版本号2.7.10),如果需要安装一些其他的库,一般有两种办法,一种是自己手动去各个库的官网下载,自己安装;另一种方法是安装pip,使用pip可以方便安装…

java造型_java造型_java向上造型有什么作用为什么要造型有什么效果_彩妆阁

1、java中造型与转型都什么意思,怎么用?我知道我知道 造型就是款式比如新款 爆款 秒杀款卖爆了等等这就是造型至于转型比如你之前写Java然后写.net 就叫转型了啦2、java中上溯造型是什么原理Upcasting,上溯造型,有的书译作“向上转…

word公式插件_如何快速输入复杂的数学公式?这里有 3 个实用技巧

不管你是不是科研狗,都可能遇到过在文章中插入公式。而我们最常用的就是使用 Word 自带的公式编辑器输入,Word 公式可以很好地匹配文章的格式,自然地插入文中。有时候处理一个公式简单,但如果你要输入大量公式,键盘、鼠…

java动作监听退出程序_监听获取程序退出事件(Linux、Windows、Java、C++)

监听程序退出事件,主要是用于程序的优雅退出。下面针对Java、C在Windows、Linux下的处理分别进行介绍.1.Java监听程序退出事件Java本身是跨平台的,不必关系Windows还是Linux。具体做法如下:通过Runtime.getRuntime().addShutdownHook(Thread …

python创建access表_Access创建表

有了数据库管理系统,在输入数据之前,您需要创建表。 Microsoft Access创建表非常容易。 事实上,当你创建一个数据库,Access创建你的第一个表(称为Table1)。通常情况下,当你需要创建一个新的表,选择CREATE &…

java观察者模式本质_6.[研磨设计模式笔记]观察者模式

1.定义定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并自动更新。2.解决问题——订阅报纸看起来订阅者是直接根有据打交道,但实际上,订阅者的订阅数据是被邮寄传递到报社&#xff0…

python r语言 作图_生物医学绘图,Python 并不比R语言差

做过基因测序和生物信息学分析,尤其是做过RNAseq分析的同学都知道,R语言中有一款数据可视化神器ggplot2,其绘图功能强大,但它的缺陷是不能直接绘制3D图形,需要加载扩展包,很麻烦。如果用Python语言&#xf…

粒子群算法tsp java_粒子群算法解决TSP问题

1. 粒子群算法简介粒子群算法(particle swarm optimization,PSO)由Kennedy和Eberhart在1995年提出,属于进化算法的一种,是通过对模拟鸟群扑食行为设计的。基本思想:从随机解出发,通过迭代寻找最优解,通过适…