(JAVA)-(网络编程)-TCP协议

客户端(发送端)

1.创建客户端的Socket对象:

参数需要传递要服务端(接收端)的IP和端口,会去链接服务端,服务端连接不上代码会报错

Socket socket =new Socket("127.0.0.1",10000);

2.从Socket对象中获取输出流,写出数据

  OutputStream os = socket.getOutputStream();//获取字节流
os.write("邓子AND诩子".getBytes());//写入数据

3.释放资源

socket.close();

 服务端(接收端)

1.创建ServerSocket对象

连接不上端口会报错 

ServerSocket ss=new ServerSocket(10000);//绑定一个接收端的端口,需要跟发送端保持一致

2.监听客户端的链接:等待客户端的链接,连接成功返回客户端的Socket对象,没连接则一直等待

Socket socket=ss.accept();

3.从连接通道中获取输入流读取数据

InputStream is=socket.getInputStream();

注意:获取到的是字节流,如果传输中文,可能出现乱码问题,将字节流进行包装成高级流即可,详情可看我之前的IO流文章。

4.释放资源

socket.close();//断开跟客户端的连接
ss.clode();//关闭服务器

细节:  

1.运行代码要先运行服务端

2.客户端创建Socket对象时,连接就建立

3.Socket可以看成一个通道,输入输出流是在通道中建立的通道关闭流自动关闭。

客户端和服务端通过三次握手和四次挥手两个协议保证连接成功和断开

1.三次握手:保证连接的建立

1.客户端向服务端发出连接请求,等待服务器确认

2.服务器返回客户端一个响应,告诉客户端收到了请求

3.客户端向服务端再次发出确认消息,连接成功建立

2.四次挥手:确保连接断开确保连接断开且数据处理完毕

1.客户端向服务端发出取消连接请求

2.服务器向客户端返回一个响应,表示收到客户端请求

3.服务器将通道内数据处理完毕,再次向客户端发出确认取消信息

4.客户端再次发送确认信息,连接断开。

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

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

相关文章

Java技术栈 —— Redis的雪崩、穿透与击穿

Java技术栈 —— Redis的雪崩、穿透与击穿 〇、实验的先导条件(NginxJmeter)一、Redis缓存雪崩、缓存穿透、缓存击穿1.1 雪崩1.2 穿透1.3 击穿 二、Redis应用场景——高并发2.1 单机部署的高并发问题与解决(JVM级别锁)2.2 集群部署…

Redis7.2.3(Windows版本)

1、解压   2、设置密码 (1) 右击编辑redis.conf文件:  (2) 设置密码。  3、测试密码是否添加成功  如上图所示,即为成功。 4、设置…

Android registerForActivityResult

startActivityForResult 已经被标记为不推荐的方法,推荐的替代方案是使用 registerForActivityResult: // Activity 的 onCreate 方法中调用 registerForActivityResult val activityResultLauncher registerForActivityResult(ActivityResultContract…

spring创建与使用

spring创建与使用 创建 Spring 项⽬创建⼀个 Maven 项⽬添加 Spring 框架⽀持添加启动类 存储 Bean 对象创建 Bean将 Bean 注册到容器 获取并使⽤ Bean 对象创建 Spring 上下⽂获取指定的 Bean 对象获取bean对象的方法 使⽤ Bean 总结 创建 Spring 项⽬ 接下来使⽤ Maven ⽅式…

010、切片

除了引用,Rust还有另外一种不持有所有权的数据类型:切片(slice)。切片允许我们引用集合中某一段连续的元素序列,而不是整个集合。 考虑这样一个小问题:编写一个搜索函数,它接收字符串作为参数&a…

uniapp在Windows系统上打包IOS

获取UDID 使用苹果手机自带Safari浏览器可获取UDID :https://www.pgyer.com/udid 苹果开发者官网:https://developer.apple.com/ 生成开发证书 安装OpenSSL并配置环境变量:http://slproweb.com/products/Win32OpenSSL.html 管理员打开命令行 where …

12.29最小生成数K算法复习(注意输入输出格式),校园最短路径(通过PRE实现路径输出,以及输入输出格式注意)

7-2 最小生成树-kruskal算法 分数 15 const int maxn 1000; struct edge {int u, v, w; }e[maxn]; int n, m, f[30]; bool cmp(edge a, edge b) {return a.w < b.w; } int find(int x) {if (f[x] x) {return x;}else {f[x] find(f[x]);return f[x];} } //int arr[100…

vue脚手架安装

1、安装&#xff1a; npm i vue/cli -g(-g全局安装,全名global) vue --version 查看版本号 2、使用 vue create 项目名称 3、安装选择项 最后一个选N

【Redis-03】Redis数据结构与对象原理 -下篇

承接上篇【Redis-02】Redis数据结构与对象原理 -上篇 8. type-字符串string 8.1 字符串的三种encoding编码&#xff08;int embstr raw&#xff09; 如果保存的是整型&#xff0c;并且可以用long类型标识&#xff08;-9223372036854775808到9223372036854775807&#xff09…

【热学】欧阳欣院士北京大学

笔记正在逐渐完善Ing~博主主页还有其他上万字精品笔记欢迎自取 ​编辑P1第1讲 绪论 33:01 关于热学的基本概念和原理的讲解。热学是一门基础科学&#xff0c;它涉及到热运动和热力学的规律。热运动是指物体内部粒子的无序运动&#xff0c;热力学是研究热运动的宏观规律。视频介…

IO进程线程 day1 IO基础+标准IO

1、使用fgets统计一个文件的行号 #include <stdio.h> #include<string.h> #include<stdlib.h> int main(int argc, const char *argv[]) {FILE *fpNULL;if((fpfopen("1.c","r"))NULL){return -1;}int count0;char buf;while(buf!EOF){b…

C++多态性——(1)初识多态

归纳编程学习的感悟&#xff0c; 记录奋斗路上的点滴&#xff0c; 希望能帮到一样刻苦的你&#xff01; 如有不足欢迎指正&#xff01; 共同学习交流&#xff01; &#x1f30e;欢迎各位→点赞 &#x1f44d; 收藏⭐ 留言​&#x1f4dd; 苦难和幸福一样&#xff0c;都是生命盛…

写代码易错点整理

写代码易错点整理 变量重复声明引用的swap使用push_back更好用背包 变量重复声明 会导致越界错误&#xff0c;结果错误等。调试时会发现某个值突然很大&#xff0c;有可能是重复声明导致的。 引用的swap使用 比如一个函数中 bool func(vector<vector<int>>&…

openFeign调用接口时传递表单参数、Json参数、HttpServletRequest对象

目录 一、控制器二、Feign客户端 openFeign调用接口时传递Json参数以及httpservletrequest对象 一、控制器 RestController RequestMapping("test") public class TestController {/*** 用来测试表单参数传递&#xff1a;单个参数*/PostMapping(value "/formD…

modelsim安装使用

目录 modelsim 简介 modelsim 简介 ModelSim 是三大仿真器公司之一mentor的产品&#xff0c;他可以模拟行为、RTL 和门级代码 - 通过独立于平台的编译提高设计质量和调试效率。单内核模拟器技术可在一种设计中透明地混合 VHDL 和 Verilog&#xff0c;常用在fpga 的仿真中。 #…

PAT乙级1045 快速排序

著名的快速排序算法里有一个经典的划分过程&#xff1a;我们通常采用某种方法取一个元素作为主元&#xff0c;通过交换&#xff0c;把比主元小的元素放到它的左边&#xff0c;比主元大的元素放到它的右边。 给定划分后的 N 个互不相同的正整数的排列&#xff0c;请问有多少个元…

Pointnet++环境配置(Windows11和ubuntu)及训练教程

本文使用的是Pytorch版本的Pointnet代码&#xff0c;主要包含完整的环境配置及训练过程&#xff0c;包括在训练时遇到的坑。 目录 1.Windows11环境配置 2.Ubuntu环境配置 3.训练教程 3.1分类&#xff08;Classification&#xff09;训练 3.2零件分割&#xff08;Part Segme…

leetcode中shell题解

常见的shell awk用法 # grades.txt 如下&#xff1a;Alice 85 Bob 92 Charlie 78 Alice 90 Bob 88# awk程序 {name $1score $2sum[name] scorecount[name] }END {for (name in sum) {avg sum[name] / count[name]printf "学生 %s 的平均分是 %.2f\n", name, av…

中科亿海微UART协议

引言 在现代数字系统设计中&#xff0c;通信是一个至关重要的方面。而UART&#xff08;通用异步接收器/发送器&#xff09;协议作为一种常见的串行通信协议&#xff0c;被广泛应用于各种数字系统中。FPGA&#xff08;现场可编程门阵列&#xff09;作为一种灵活可编程的硬件平台…

个体诊所软件方案,农村医疗服务站社区门诊电子处方管理系统软件教程

个体诊所软件方案&#xff0c;农村医疗服务站社区门诊电子处方管理系统软件教程 一、软件程序问答 1、处方单软件有病历汇总吗 如下图&#xff0c;软件以 佳易王电子处方软件V17.2版本为例说明 点击 病历汇总统计 按钮&#xff0c; 可以按明细查询或病历汇总查询&#xf…