TCP/IP--Socket套接字--JAVA

devtools/2024/11/16 9:47:24/

一、概念

Socket套接字,是由系统提供⽤于⽹络通信的技术,是基于TCP/IP协议的⽹络通信的基本操作单元。
基于Socket套接字的⽹络程序开发就是⽹络编程。

二、分类

1.流套接字

使用传输层TCP协议。TCP协议特点:有链接、可靠传输、面向字节流、有接收缓冲区,也有发送缓冲区、大小不限。

对于字节流来说,可以简单的理解为,传输数据是基于IO流,流式数据的特征就是在IO流没有关闭的 情况下,是⽆边界的数据,可以多次发送,也可以分开多次接收。

2.数据报套接字

使用传输层UDP协议。

以下为UDP的特点: ⽆连接 、不可靠传输、 ⾯向数据报 、有接收缓冲区,⽆发送缓冲区 、⼤⼩受限:⼀次最多传输64k。
对于数据报来说,可以简单理解为发送数据是一块儿一块儿的,发送一块儿数据假如是100字节,那么接收也必须是100字节,不能分一百次每次1字节的接收。

三、UDP数据报套接字编程

1.API介绍

Socket API本身是操作系统的功能,JDK基于操作系统的API进行了封装形成了我们JAVA版本的API。

以下介绍的是UDP的Socket API:

DatagramSocket和DatagramPacket。我们查阅Java文档可以看到这两个Api的详细信息Java Documentation - Get Started。

通过文档我们可以看到DatagramSocket的构造方法:

以及对它详细的解释 :

对它来说主要的方法有三个:

简单来说,我们知道计算机中的“文件”通常是一个广义的概念。文件还能代指一些硬件设备。

那么我们就可以将网卡抽象成Socket文件,操作网卡的时候就和操作普通文件差不多分为三步,打开-->读写-->关闭。由于操作网卡,直接操作是不好操作的,所以我们将操作网卡转换成操作socket文件,socket文件就相当于“网卡的遥控器”。 

基于以上这些概念,我们可以理解到DatagramSocket的构造方法就相当于打开文件,创建socket的时候就会关联上一个端口号,使用端口号来区分主机上不同的应用程序。

receive和send方法就相当于读和写。close就是关闭文件。DatagramPacket就表示一个完整的数据报。

DatagramPacket:

UDP数据报的载荷数据就可以通过构造方法来指定。

 2.基于UDP实现简单回显服务器

对于回显服务器来说,请求和响应是相同的。

首先我们需要定义一个DatagramSocket对象。我们知道对于一个服务器来说,客户端啥时候发请求,发多少个请求都是我们无法预测的,因此服务器中通常都要有一个死循环持续不断的尝试读取客户端的请求数据,也就是7*24小时运行。

以上代码便实现了一个简单的回显服务器 。 

我们还可以在简单写一个客户端来查看运行效果。

运行结果如下:

当然我们也可以在客户端加一个while循环。 


http://www.ppmy.cn/devtools/134400.html

相关文章

革命性AI搜索引擎!ChatGPT最新功能发布,无广告更智能!

零、前言 大人,时代变了。 最强 AI 助力下的无广告搜索引擎终于问世。我们期待已久的这一刻终于到来了,从今天起,ChatGPT 正式转型为一款 AI 搜索引擎! 北京时间 11 月 1 日凌晨,恰逢 ChatGPT 两岁生日,O…

Linux(基本使用和配置 图片+大白话)

后面也会持续更新,学到新东西会在其中补充。 建议按顺序食用,欢迎批评或者交流! 缺什么东西欢迎评论!我都会及时修改的! 在这里真的很感谢这位老师的教学视频让迷茫的我找到了很好的学习视频 王晓春老师的个人空间…

远程控制步骤

当远在千里之外的朋友想求助你帮他找到他电脑上的文件、或者是给他安装软件时。但是你给他说了他又找不到,那么这时你就可以通过控制对方的电脑去做一系列的操作。 如何远程控制对方的电脑非常关键。 方法一(Windows自带远程桌面功能)&#…

飞牛云fnOS本地部署1Panel服务器运维管理面板并搭建Halo个人博客

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

《C++ 实现生成多个弹窗程序》

《C 实现生成多个弹窗程序》 在 C 编程中,我们可以利用特定的系统函数来创建弹窗,实现向用户展示信息等功能。当需要生成多个弹窗时,我们可以通过循环结构等方式来达成这一目的。 一、所需头文件及函数介绍 在 Windows 操作系统环境下&#…

采样率22050,那么CHUNK_SIZE 一次传输的音频数据大小设置多少合适?unity接收后出现卡顿的问题的思路

在采样率为22050的情况下,选择合适的 CHUNK_SIZE 主要取决于 Unity 接收和处理音频数据的效率。以下是设置 CHUNK_SIZE 的一些建议: 计算 CHUNK_SIZE:音频的传输数据量可以通过公式 CHUNK_SIZE 采样率 * 传输间隔秒数 * 每样本字节数 * 声道…

五、函数封装及调用、参数及返回值、作用域、匿名函数、立即执行函数

1. 函数基本使用 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title><style&…

单片机智能家居火灾环境安全检测

目录 前言 一、本设计主要实现哪些很“开门”功能&#xff1f; 二、电路设计原理图 电路图采用Altium Designer进行设计&#xff1a; 三、实物设计图 四、程序源代码设计 五、获取资料内容 前言 在现代社会&#xff0c;火灾安全始终是人们关注的重点问题。随着科技的不…