socket网络编程-TC/IP方式
网络编程
1.概念:两台设备之间通过网络数据传输。
2.网络通信:将数据通过网络从一台设备传输另外一台设备。
3.java.net包下提供了一系列的类和接口,提供程序员使用,完成网络通信。
TCP和UDP
TCP协议:
1.使用TCP协议前,需建立TCP连接,形成传输数据通道。
2.传输前,采用“三次握手”方式,是可靠的。
3.TCP协议进行通信的两个应用进程:客户端、服务端。
4.在连接中可进行大数据量的传输。
UDP协议:
1.将数据、源、目的封装成数据包,不需要建立连接
2.每个数据报的大小限制在64Kb内
3.因无需连接,故是不可靠的
4.发送数据结束时无需释放资源,速度快。
5.举例:发短信
介绍java.net中的工具类
Socket介绍
1.套接字(Socket)开发网络应用程序被广泛,以至于成为事实上的标准。
2.通信额两端都要有Socket,是两台机器通信的端点。
3.网络通信其实是Socket间的通信。
4.Socket允许程序把网络连接当成一个流,数据在两个Socket间通过IO传输。
5.一般主动发起通信的应用程序属于客户端,等待通信请求的为服务端。
当我们需要通讯时(读写数据),客户端和服务端分别使用以下两个方法。
1.socket.getOutputSream()
2.socket.getInputStream()
Socket有TCP编程和UDP编程。
TCP网络通信编程的案例
要求:
1.编写一个服务器端和客户端。
2.服务器端在9999端口监听。
3.客户端连接到服务器,发送“Hello server”,然后退出。
4.服务器端接受到客户端发送的信息,输出,并退出。
思路
代码实现,客户端如下:
import java.io.IOException;
import java.io.OutputStream;
import java.net.*;public class SocketClientTCP01 {public static void main(String[] args) {try {// 思路// 1.连接服务端// 解读:连接本机的9999,如果连接成功,返回socket对象Socket socket = new Socket(InetAddress.getLocalHost(), 9999);System.out.print("服务 socket = " + socket.getClass());// 2. 连接上后,生成Socket,通过socket.getOutputStream()// 得到 和 socket对象关联的输出流对象 OutputStream outputStream = socket.getOutputStream();// 3.通过输出流,写入数据到据通道outputStream.write("hello , server ".getBytes());// 4. 关闭流outputStream.close();socket.close();} catch (UnknownHostException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}
服务端如下:
import java.io.IOException;
import java.io.InputStream;
import java.net.*;
public class SocketServerTCP01 {public static void main(String[] args) {try {// 1.在本机的9999端口监听,等待连接//细节:一台主机只能有重复的端口存在//细节:ServerSocket可以通过accept()返回多个Socket[多个客户端]ServerSocket serverSocket = new ServerSocket(9999);System.out.print("我在9999端口等待监听,等待连接");// 2.当没有客户端连接9999端口时,程序会阻塞,等待连接//如果有客户端连接,则会返回Socket对象,程序继续Socket socket = serverSocket.accept();System.out.print("服务端 socket = " + socket.getClass());// 3.通过socket.getInputStream(),读取客户端写入到数据通道的数据,显示InputStream input = socket.getInputStream();// 4.读取IO相关byte [] buf = new byte[1024];int readLen = 0 ; while((readLen = input.read(buf)) != -1) {//根据读取到的实际长度,显示内容System.out.print(new String(buf , 0 , readLen));}input.close();socket.close();} catch (IOException e) {e.printStackTrace();}}
}
案例,服务端与客户端相互发送
其中服务端 代码如下:
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;public class SocketTCP02Server {public static void main(String[] args) {try {// 1.在本机的9999端口监听,等待连接//细节:一台主机只能有重复的端口存在//细节:ServerSocket可以通过accept()返回多个Socket[多个客户端]ServerSocket serverSocket = new ServerSocket(9999);System.out.print("我在9999端口等待监听,等待连接 \n");// 2.当没有客户端连接9999端口时,程序会阻塞,等待连接//如果有客户端连接,则会返回Socket对象,程序继续Socket socket = serverSocket.accept();System.out.print("服务端 socket = " + socket.getClass() + "\n");// 3.通过socket.getInputStream(),读取客户端写入到数据通道的数据,显示InputStream input = socket.getInputStream();// 4.读取IO相关byte [] buf = new byte[1024];int readLen = 0 ;while((readLen = input.read(buf)) != -1) {//根据读取到的实际长度,显示内容System.out.print(new String(buf , 0 , readLen));}// 获取socket相关的输出流OutputStream outputStream = socket.getOutputStream();outputStream.write("hello , client ".getBytes());socket.shutdownOutput();//关闭资源input.close();socket.close();outputStream.close();} catch (IOException e) {e.printStackTrace();}}
}
客户端程序为:
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.InetAddress;
import java.net.Socket;
import java.net.UnknownHostException;
public class SocketTCP02Client {public static void main(String[] args) {try {// 思路// 1.连接服务端// 解读:连接本机的9999,如果连接成功,返回socket对象Socket socket = new Socket(InetAddress.getLocalHost(), 9999);System.out.print("服务 socket = " + socket.getClass() + "\n");// 2. 连接上后,生成Socket,通过socket.getOutputStream()// 得到 和 socket对象关联的输出流对象OutputStream outputStream = socket.getOutputStream();// 3.通过输出流,写入数据到据通道outputStream.write("hello , server ".getBytes());//发送结束标志 半双工吗?socket.shutdownOutput();//4.获取和socket关联的输入流,读取数据(byte),并显示InputStream inputStream = socket.getInputStream();// 4.读取IO相关byte [] buf = new byte[1024];int readLen = 0 ;while((readLen = inputStream.read(buf)) != -1) {//根据读取到的实际长度,显示内容System.out.print(new String(buf , 0 , readLen));}// 5. 关闭流inputStream.close();outputStream.close();socket.close();} catch (UnknownHostException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}
相关文章:
![](https://i-blog.csdnimg.cn/direct/bcf95acea7e7460ca52a5778ab3646db.png)
socket网络编程-TC/IP方式
网络编程 1.概念:两台设备之间通过网络数据传输。 2.网络通信:将数据通过网络从一台设备传输另外一台设备。 3.java.net包下提供了一系列的类和接口,提供程序员使用,完成网络通信。 TCP和UDP TCP协议: 1.使用TCP协…...
![](https://i-blog.csdnimg.cn/direct/698ec94684d04cec97d1db80a06b92d7.png)
《分布式光纤测温:解锁楼宇安全的 “高精度密码”》
在楼宇建筑中,因其内部空间庞大,各类电器设施众多,如何以一种既高效又稳定,兼具低成本与高覆盖特性的方式,为那些关键线路节点开展温度监测,是目前在安全监测领域一项重点研究项目,而无锡布里渊…...
![](https://www.ngui.cc/images/no-images.jpg)
C语言基本知识复习浓缩版:数组
所谓数组(Array),就是一系列数据的集合。这些数据具有相同的类型,并且在内存中挨着存放,彼此之间没有缝隙。换句话说,数组用来存放多份数据,但是它有两个要求: 这些数据的类型必须相…...
![](https://www.ngui.cc/images/no-images.jpg)
Python贪心
贪心 贪心:把整体问题分解成多个步骤,在每个步骤都选取当前步骤的最优方案,直至所有步骤结束;每个步骤不会影响后续步骤核心性质:每次采用局部最优,最终结果就是全局最优如果题目满足上述核心性质…...
![](https://www.ngui.cc/images/no-images.jpg)
rk3568 内核态OOM内存泄漏kmemleak使用
1,配置,修改\kernel\arch\arm64\configs\rockchip_linux_defconfig,修改后查看.config. larkubuntu:~/Public/rk356x-linux/rk356x-linux/kernel$ cat .config | grep -i kmemleak CONFIG_HAVE_DEBUG_KMEMLEAKy CONFIG_DEBUG_KMEMLEAKy CONFI…...
![](https://i-blog.csdnimg.cn/direct/eb14264800b347b7907726008f73ca67.png)
ASP.NET Core - 日志记录系统(二)
ASP.NET Core - 日志记录系统(二) 2.4 日志提供程序2.4.1 内置日志提供程序2.4.2 源码解析 本篇接着上一篇 ASP.NET Core - 日志记录系统(一) 往下讲,所以目录不是从 1 开始的。 2.4 日志提供程序 2.4.1 内置日志提供程序 ASP.NET Core 包括…...
![](https://www.ngui.cc/images/no-images.jpg)
阿里云直播互动Web
官方文档:互动消息Web端集成方法_视频直播(LIVE)-阿里云帮助中心 以下是代码实现: <!-- 引入阿里云互动文件 --> <script src"https://g.alicdn.com/code/lib/jquery/3.7.1/jquery.min.js"></script> <script src&quo…...
![](https://i-blog.csdnimg.cn/direct/c2575be9d11840edb4ab7d99e4d932a2.jpeg)
解锁无证身份核验:开启便捷安全新征程
在当今快速发展的数字化时代,身份核验作为确保信息安全与交易诚信的基石,正经历着前所未有的变革。传统的身份核验方式,如携带身份证件进行现场验证,虽在一定程度上保障了安全,却也带来了诸多不便。随着科技的进步&…...
![](https://i-blog.csdnimg.cn/direct/391dfadcfe0e42d2b425ece4d551102b.png)
[DO374] Ansible 配置文件
[DO374] Ansible 配置文件 1. 配置文件位置2. 配置文件3. Ansible 配置4. Ansible的Ad-hoc5. Ansible 模块6. playbook段落7. 任务执行后续8. Ansible 变量8.1 ansible 变量的定义8.1.1 主机变量8.1.2 主机组变量 8.2 vars的循环 9. Ansible Collection10. Ansible-galaxy 安装…...
![](https://i-blog.csdnimg.cn/direct/e63a5d9b651c405ea751640283fbc439.webp#pic_center)
【杂谈】-50+个生成式人工智能面试问题(四)
7、生成式AI面试问题与微调相关 Q23. LLMs中的微调是什么? 答案:虽然预训练语言模型非常强大,但它们并不是任何特定任务的专家。它们可能对语言有惊人的理解能力,但仍需要一些LLMs微调过程,开发者通过这个过程提升它…...
![](https://img-home.csdnimg.cn/images/20230724024159.png?origin_url=.%2FRuoYi%20Cloud%E9%A1%B9%E7%9B%AE%E5%88%86%E6%9E%90%2Fimage-20250108122140978.png&pos_id=img-oLtXQt9w-1736322984344)
RuoYi Cloud项目解读【四、项目配置与启动】
四、项目配置与启动 当上面环境全部准备好之后,接下来就是项目配置。需要将项目相关配置修改成当前相关环境。 1 后端配置 1.1 数据库 创建数据库ry-cloud并导入数据脚本ry_2024xxxx.sql(必须),quartz.sql(可选&…...
![](https://i-blog.csdnimg.cn/img_convert/2f2f9c40bc61e3b70d0529b67917701a.png)
51c~Pytorch~合集5
我自己的原文哦~ https://blog.51cto.com/whaosoft/13059544 一、PyTorch DDP 正在郁闷呢 jetson nx 的torchvision安装~~ 自带就剩5g 想弄到ssd 项目中的 venv中又 cuda.h没有... 明明已经装好什么都对 算了说今天主题 啊对 还是搬运啊 学习之工具人而已 勿怪 Distrib…...
![](https://i-blog.csdnimg.cn/direct/59c9bfd1d872433190a5d9eea15de04b.png#pic_center)
【芯片封测学习专栏 -- 什么是 Chiplet 技术】
请阅读【嵌入式开发学习必备专栏 Cache | MMU | AMBA BUS | CoreSight | Trace32 | CoreLink | ARM GCC | CSH】 文章目录 OverviewChiplet 背景UCIeChiplet 的挑战 Overview Chiplet 又称为小芯片。该技术通过将大型SoC划分为更小的芯片,使得每个部分都能采用不同…...
![](https://www.ngui.cc/images/no-images.jpg)
Java SpringBoot + Vue + Uniapp 集成JustAuth 最快实现多端三方登录!(QQ登录、微信登录、支付宝登录……)
注:本文基于 若依 集成just-auth实现第三方授权登录 修改完善,所有步骤仅代表本人如下环境亲测可用,其他环境需自辩或联系查看原因! 系统环境 运行系统:Windows10专业版、Linux Centos7.6 Java 版本:1.8.0_…...
![](https://i-blog.csdnimg.cn/direct/043a954910414c2aa1c3ef8372d550f4.png)
支持向量回归(SVR:Support Vector Regression)用于A股数据分析、预测
简单说明 支持向量回归是一种用来做预测的数学方法,属于「机器学习」的一种。 它的目标是找到一条「最合适的线」,能够大致描述数据点的趋势,并允许数据点离这条线有一定的误差(不要求所有点都完全落在这条线上)。 可以把它想象成:找到一条「宽带」或「隧道」,大部分…...
![](https://i-blog.csdnimg.cn/direct/12f90d042b2d41e4931da9f4035e31cf.png)
ZYNQ初识10(zynq_7010)UART通信实验
基于bi站正点原子讲解视频: 系统框图(基于串口的数据回环)如下: 以下,是串口接收端的波形图,系统时钟和波特率时钟不同,为异步时钟,,需要先延时两拍,将时钟同…...
![](https://i-blog.csdnimg.cn/direct/e2853e7c31af4e36947826128e7f2162.png)
专题 - STM32
基础 基础知识 STM所有产品线(列举型号): STM产品的3内核架构(列举ARM芯片架构): STM32的3开发方式: STM32的5开发工具和套件: 若要在电脑上直接硬件级调试STM32设备,则…...
![](https://i-blog.csdnimg.cn/direct/ed9305fc6ca6436fa8a6fb86f9c1c443.png)
2 XDMA IP中断
三种中断 1. Legacy 定义:Legacy 中断是传统的中断处理方式,使用物理中断线(例如 IRQ)来传递中断信号。缺点: 中断线数量有限,通常为 16 条,限制了可连接设备的数量。中断处理可能会导致中断风…...
![](https://img-blog.csdnimg.cn/ea69961097f74dc181f3c62df5a3b04f.png)
自然语言转 SQL:通过 One API 将 llama3 模型部署在 Bytebase SQL 编辑器
使用 Open AI 兼容的 API,可以在 Bytebase SQL 编辑器中使用自然语言查询数据库。 出于数据安全的考虑,私有部署大语言模型是一个较好的选择 – 本文选择功能强大的开源模型 llama3。 由于 OpenAI 默认阻止出站流量,为了简化网络配置&#…...
![](https://www.ngui.cc/images/no-images.jpg)
抖音矩阵是什么
抖音矩阵是指在同一品牌或个人IP下,通过创建多个不同定位的抖音账号(如主号、副号、子号等),形成一个有机的整体,以实现多维度、多层次的内容覆盖和用户互动。以下是关于抖音矩阵的详细介绍: 抖音矩阵的类…...
![](https://i-blog.csdnimg.cn/img_convert/cf844e7d2dd2576a9be1fe784f408a9c.png)
怎么抓取ios 移动app的https请求?
怎么抓取IOS应用程序里面的https? 这个涉及到2个问题 1.电脑怎么抓到IOS手机流量? 2.HTTPS怎么解密? 部分app可以使用代理抓包的方式,但是正式点的app用代理抓包是抓不到的,例如pin检测,证书双向校验等…...
![](https://www.ngui.cc/images/no-images.jpg)
pyqt鸟瞰
QApplication是Qt框架中的一个类,专门用于管理基于QWidget的图形用户界面(GUI)应用程序的控制流和主要设置。QApplication类继承自QGuiApplication,提供了许多与GUI相关的功能,如窗口系统集成、事件处理等。 QAppli…...
![](https://i-blog.csdnimg.cn/direct/2e1359a22f374d78adada42731faa427.png)
【Docker】入门教程
目录 一、Docker的安装 二、Docker的命令 Docker命令实验 1.下载镜像 2.启动容器 3.修改页面 4.保存镜像 5.分享社区 三、Docker存储 1.目录挂载 2.卷映射 四、Docker网络 1.容器间相互访问 2.Redis主从同步集群 3.启动MySQL 五、Docker Compose 1.命令式安装 …...
![](https://www.ngui.cc/images/no-images.jpg)
Token和JWT的关系详细讲解
Token 和 JSON Web Token (JWT) 是两个相关但概念上不同的术语,它们在现代 Web 应用程序的身份验证和授权中扮演着重要角色。下面将详细介绍两者之间的关系以及 JWT 的具体工作原理。 1. Token 概述 Token 是一种广义的概念,指的是任何可以证明用户身份…...
![](https://img-blog.csdnimg.cn/img_convert/a08571f736dc04b5bef51cd09e8e3a0a.gif#pic_center)
【Linux系列】Curl 参数详解与实践应用
💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…...
![](https://www.ngui.cc/images/no-images.jpg)
解决 Git SSL 连接错误:OpenSSL SSL_read: SSL_ERROR_SYSCALL, errno
问题描述 在执行 git pull 命令时遇到以下错误: > git pull --tags origin main fatal: unable to access github仓库: OpenSSL SSL_read: SSL_ERROR_SYSCALL, errno 0这个错误通常表示 Git 在尝试通过 HTTPS 连接到 GitHub 时遇到了 SSL 连接问题。 解决方案…...
![](https://www.ngui.cc/images/no-images.jpg)
《Vue3 八》<script setup> 语法
<script setup> 是在单文件中使用 Composition API 的编译时语法糖,里面的代码会被编译成组件 setup() 函数的内容。 <script setup> 中的代码在每次组件实例被创建的时候都都会被执行。 定义数据: 在 <script setup> 语法糖的写法中…...
![](https://i-blog.csdnimg.cn/direct/68f5c880249e4b4db503ac071f553383.png)
51单片机和STM32集成蓝牙模块实用指南
51单片机和STM32集成蓝牙模块实用指南 蓝牙模块(如HC-05、HC-06、JDY-31等)是嵌入式开发中常用的无线通信模块,广泛应用于智能家居、物联网、机器人等领域。本文将详细介绍如何将蓝牙模块集成到 51单片机 和 STM32 中,并提供一个…...
![](https://i-blog.csdnimg.cn/direct/15d23b23a4b74dcaa759398eed6a3aeb.png)
Transformer:深度学习的变革力量
深度学习领域的发展日新月异,在自然语言处理(NLP)、计算机视觉等领域取得了巨大突破。然而,早期的循环神经网络(RNN)在处理长序列时面临着梯度消失、并行计算能力不足等瓶颈。而 Transformer 的横空出世&am…...
![](https://www.ngui.cc/images/no-images.jpg)
sql 函数
# 四则运算 - * / # 函数 distinct 、count、sum、max、min、avg、sum、round select concat(device_id 是,device_id ) device_id from device_id_apply_factor where device_id D6A42CE6A0; select concat_ws(|||,device_id ,factor_a ,module_type) from 、device_id_app…...
![](https://img-blog.csdnimg.cn/20210108154538509.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3hpeGloYWhhbGVsZWhlaGU=,size_16,color_FFFFFF,t_70#pic_center)
wordpress做管理网站/免费建网站软件哪个好
文章目录1. 要求2. 考点内容2.1 集群安装:10%2.2 集群强化:15%2.3 系统强化:15%2.4 微服务漏洞最小化:20%2.5 供应链安全:20%2.6 监控、日志记录和运行时安全:20%3. 需要掌握内容3.1 群集设置 10%3.2 群集强…...
![](https://img-blog.csdnimg.cn/img_convert/0862355c503524c0aaaa9ef05355404c.png)
开发一个视频网站要多少钱/四年级说新闻2023
点击上方“Java基基”,选择“设为星标”做积极的人,而不是积极废人!每天 14:00 更新文章,每天掉亿点点头发...源码精品专栏 原创 | Java 2021 超神之路,很肝~中文详细注释的开源项目RPC 框架 Dubbo 源码解析网络应用框…...
![](https://img2018.cnblogs.com/blog/885859/201908/885859-20190807181016202-687859949.png)
wordpress干啥的/水平优化
认识字符集 对于计算机而言,它仅认识两个0和1,不管是在内存中还是外部存储设备上,我们所看到的文字、图片、视频等等“数据”在计算机中都是已二进制形式存在的。不同字符对应二进制数的规则,就是字符的编码。字符编码的集合称为字…...
![](https://s1.51cto.com/attachment/201202/20/450441_1329724049Zubn.png)
购物网站建设费用/长春百度快速优化
我的邀请链接,请从以下位置注册:http://www.kuaipan.cn/index.php?acaccount&opregister&channelb58vj0 这样可以给我增加积分,也可以让你的初始容量从5G直接升到6G ,感谢。 金山快盘(T盘)是什么:…...
![](https://wizardforcel.gitbooks.io/the-art-of-programming-by-july/images/8/8.2/8.2.3.gif)
web服务器做网站/咨询公司
方法介绍 MapReduce是一种计算模型,简单的说就是将大批量的工作(数据)分解(MAP)执行,然后再将结果合并成最终结果(REDUCE)。这样做的好处是可以在任务被分解后,可以通过大…...
![](/images/no-images.jpg)
免费二级网站/常见的搜索引擎有哪些
昨天晚上躺下刚准备睡觉,忽然听见外面吵闹的声音,仔细听又听不出来说的什么,因为说的是白话:),时而还有敲打铁门的声音,我猜想大概是某人深夜晚归,忘记带钥匙,被LP锁在门…...