首页 > 编程语言 >(八)Java网络编程

(八)Java网络编程

时间:2023-01-23 22:14:34浏览次数:46  
标签:DatagramSocket 调用 Java Socket 编程 网络 实例 连接

Java网络编程

1、tcp和udp的区别

TCP,Transmission Control Protocol 的缩写,即传输控制协议。

1)面向连接,即必须在双方建立可靠连接之后,才会收发数据

2)信息包头 20 个字节

3)建立可靠连接需要经过3次握手

4)断开连接需要经过4次挥手

5)需要维护连接状态

6)报文头里面的确认序号、累计确认及超时重传机制能保证不丢包、不重复、按序到达

7)拥有流量控制及拥塞控制的机制

 

UDP,User Data Protocol 的缩写,即用户数据报协议。

1)不建立可靠连接,无需维护连接状态

2)信息包头 8 个字节

3)接收端,UDP 把消息段放在队列中,应用程序从队列读消息

4)不受拥挤控制算法的调节

5)传送数据的速度受应用软件生成数据的速率、传输带宽、源端和终端主机性能的限制

6)面向数据报,不保证接收端一定能收到

2、OSI的七层模型

1)物理层

2)数据链路层

3)网络层

4)传输层

5)会话层

6)表达层

7)应用层

3、Java中的Socket

1)Socket也称作套接字,用于描述IP地址和端口,是一个通信链的句柄,是应用层与传输层之间的桥梁

2)应用程序可以通过Socket向网络发出请求或应答网络请求

3)网络应用程序位于应用层,TCP和UDP属于传输层协议,在应用层和传输层之间,使用Socket来进行连接

4)Socket是传输层供给应用层的编程接口

5)Socket编程可以开发客户端和服务器应用程序,可以在本地网络上进行通信,也可通过公网Internet在通信

4、基于TCP的Socket编程的主要步骤

服务端:

1)指定本地的端口创建 ServerSocket 实例, 用来监听指定端口的连接请求

2)通过 accept() 方法返回的 Socket 实例,建立了一个和客户端的新连接

3)通过 Sockect 实例获取 InputStream 和 OutputStream 读写数据

4)数据传输结束,调用 socket 实例的 close() 方法关闭连接

客户端:

1)指定的远程服务器 IP 地址和端口创建 Socket 实例

2)通过 Socket 实例获取 InputStream 和 OutputStream 来进行数据的读写

3)数据传输结束,调用 socket 实例的 close() 方法关闭连接

5、基于UDP的Socket编程的主要步骤

服务端:

1)指定本地端口创建 DatagramSocket 实例

2)通过字节数组,创建 DatagramPacket 实例,调用 DatagramSocket 实例的 receive() 方法,用 DatagramPacket 实例来接收数据

3)设置 DatagramPacket 实例返回的数据,调用 DatagramSocket 实例的 send() 方法来发送数据

4)数据传输完成,调用 DatagramSocket 实例的 close() 方法

客户端:

1)创建 DatagramSocket 实例

2)通过 IP 地址端口和数据创建 DatagramSocket 实例,调用 DatagramSocket 实例 send() 方法发送数据包

3)通过字节数组创建 DatagramSocket 实例,调用 DatagramSocket 实例 receive() 方法接受数据包

4)数据传输完成,调用 DatagramSocket 实例的 close() 方法

标签:DatagramSocket,调用,Java,Socket,编程,网络,实例,连接
From: https://www.cnblogs.com/it-java-ls/p/17065595.html

相关文章

  • 新人入门编程如何选择编程语言
    新人入门编程选择编程语言时,应该考虑以下几点:易学性:选择易于学习和理解的编程语言,可以让新人更快地入门。应用领域:根据自己的兴趣和未来发展规划来选择适合自己的编程语言......
  • JAVA进阶--- Properties文件的使用
    properties文件介绍 后缀properties的文件是一种属性文件。这种文件以key=value格式存储内容。Java中可以使用Properties工具类来读取这个文件。项目中会将一些配置信息......
  • JavaScript
    JavaScript第三章--类型、值、变量3.10变量声明与赋值3.10.1let,const//let可以声明的同时赋值,也可以只声明,只声明的变量值为undefinedleti,num;letb=10;//co......
  • 神经网络特征图显示(matplotlib同一画布切换的方式)
    在网络上查了一转也没找到,全是复制粘贴的代码,下面贴下自己写的代码。采用matplotlib.pyplot方式绘制,发现默认显示附带工具栏,就在里面按照ttk方式添加了切换图片的按钮,给出......
  • Java 枚举
    转:Java枚举知识点概念enum的全称为enumeration,是JDK1.5中引入的新特性。在Java中,被enum关键字修饰的类型就是枚举类型。形式如下:enumColor{RED,GREE......
  • Java socket程序打包为exe闪退
    提问:   我写了个Javasocket的程序,IDE运行没什么问题,但我把程序打包成exe,它就显示这个,然后就闪退了。有没有人知道是怎么回事。解答: 地址已经被绑定了,你先解绑一......
  • Python的UDP网络编程
    UDP编程通信协议有,UDP和TCP模式:1、TCP适用于效率较低,精度较高的场景(文件传输、电子邮件)2、UDP适用于效率较高(视频在线点播,网络语音通话等)接下来的代码介绍的是UDP协议......
  • 网络编程
    目录网络编程一、OSI七层协议1.OSI七层协议之物理链接层2.OSI七层协议之数据链路层3.OSI七层协议之网络层4.OSI七层协议之传输层5.OSI七层协议之会话层6.OSI七层协议之表示......
  • 【SpringBoot】源码之 Java16新特性:【instanceOf】
    在java16之前,我们要进行instanceOf判断一般会伴随着强转操作,就像这样:if(objinstanceofString){Strings=(String)obj;...}这样的书写方式看起来比......
  • Linux系统编程—进程(作业+答案)
    文章目录​​程序和进程​​​​并发​​​​单道程序设计​​​​多道程序设计​​​​CPU和MMU​​​​进程控制块PCB​​​​环境变量:​​​​常见环境变量​​​​PATH......