当前位置: 首页 > news >正文

【网络编程】简述TCP通信程序,三次握手,四次挥手

文章目录

  • 🎄TCP通信程序
    • ⭐打印字符串
      • ✨中文乱码问题
        • 🎈解决方法
  • 🌺TCP三次握手
  • 🌺TCP四次挥手
  • 🛸其他

🎊专栏【网络编程】
🍔喜欢的诗句:更喜岷山千里雪 三军过后尽开颜。
🎆音乐分享【如愿】
🥰欢迎并且感谢大家指出我的问题

在这里插入图片描述

TCP(Transmission Control Protocol)是传输控制协议,是一种面向连接的、可靠的、基于字节流的传输层通信协议。在程序员的网络编程中,TCP可以说是使用最频繁的网络协议之一。那么TCP通信程序是如何工作的呢?本文将详细介绍TCP通信的程序示例、三次握手、四次挥手等过程,帮助大家深入理解TCP通信的内在运行机制。

TCP通信需要客户端与服务端建立连接后才能相互发送数据。在Java中,通过Socket类代表一个连接端点,通过ServerSocket类提供服务端口。TCP在传输数据之前,需要完成三次握手建立连接。当一方完成发送数据后,还需要进行四次挥手释放连接。这些都是TCP可靠传输的重要保证。

本文首先给出了使用Socket和ServerSocket的TCP通信示例程序,实现了客户端发送字符串,服务端打印输出的功能。这样可以看到TCP编程的基本流程和步骤。然后针对出现的中文乱码问题,给出了使用转换流InputStreamReader的解决方案。

接下来详细介绍了TCP三次握手的过程,这是为了让两端确认对方与自己都处于可通信状态,防止已失效连接请求报文段突然又传到了服务端,产生错误。最后又解释了TCP四次挥手的目的,这是为了让服务端明确知道客户端不会再发送数据了,可以安全关闭连接。

如果你想深入理解TCP的工作流程,那么本文提供的通信程序示例以及握手挥手过程的详细剖析将会对你有所帮助。最后,文中还提供了TCP与UDP的区别表格,可以更清楚对比这两种网络协议。

🎄TCP通信程序

TCP通信协议是一种可靠的网络协议,它在通信的两端各建立一个Socket对象
通信之前要保证连接已经建立
通过Socket产生IO流来进行网络通信
在这里插入图片描述

⭐打印字符串

import java.io.IOException;
import java.io.OutputStream;
import java.net.Socket;public class Client {public static void main(String[] args) throws IOException {//TCP协议,发送数据//创建Socket对象Socket socket=new Socket("192.168.31.13",10001);//从连接通道中获取输出流OutputStream os=socket.getOutputStream();//写出数据os.write("aaa".getBytes());//释放资源os.close();socket.close();}
}

Server.java


import java.io.IOException;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;public class Server {public static void main(String[] args) throws IOException {//接收数据//创建对象ServerSocket ss=new ServerSocket(10001);//监听客户端的连接Socket socket=ss.accept();//从连接通道中获取输入流读取数据InputStream is=socket.getInputStream();int b;while((b=is.read())!=-1){System.out.println((char) b);}//释放资源socket.close();ss.close();}
}

先运行Server.java,再运行Client.java
发现打印出了字符串
在这里插入图片描述

✨中文乱码问题

在这里插入图片描述

我们发现,如果打印的字符串不是英文,而是中文,会产生乱码
这是为什么呢

因为我们没有指定编码表,那么就会使用平台默认的编码表UTF-8,在这种条件下,一个中文是3个字节,那么4个中文就是12个字节,此时12个字节全部都传到了服务器
服务器在读的时候,是一个字节一个字节的的读的,但是3个字节才是一个中文,那么每次转换的是1/3个中文,所以会出现乱码

🎈解决方法

使用一个转换流

在这里插入图片描述

🌺TCP三次握手

在这里插入图片描述

🌺TCP四次挥手

在这里插入图片描述

🛸其他

在这里插入图片描述
通过学习TCP通信程序的代码示例,并理解三次握手与四次挥手的必要性,可以加深对TCP协议机制的认识,帮助我们更好地运用TCP解决传输需求。
在这里插入图片描述

http://www.lryc.cn/news/237786.html

相关文章:

  • 【ARM Trace32(劳特巴赫) 使用介绍 5 -- Trace32 ELF 文件加载介绍】
  • Linux(4):Linux文件与目录管理
  • Altium Designer学习笔记2
  • Atlassian发布最新补贴政策,Jira/Confluence迁移上云最低可至零成本
  • 基于FPGA的五子棋(论文+源码)
  • QT5 MSVC2017 64bit配置OpenCV4.5无需编译与示范程序
  • windows如何查看自己的ip地址
  • Camera2的使用【详细】
  • Playcanvas后处理-辉光bloom
  • GCC 学习
  • 2023数维杯数学建模C题完整版本
  • 快速解密PPT幻灯片密码,让PPT重见天日
  • 十六、RabbitMQ快速入门
  • C#WPF用户控件及自定义控件实例
  • 大模型的语言能力
  • 直播岗位认知篇
  • 后端技术知识点内容-全部内容-面试宝典-后端面试知识点
  • 3.ubuntu20.04环境的ros搭建
  • 米诺地尔行业分析:预计2029年将达到14亿美元
  • 在Spring Boot中使用Thymeleaf开发Web页面
  • 2023年亚太杯数学建模思路 - 案例:感知机原理剖析及实现
  • linux高级篇基础理论五(用户安全,口令设置,JR暴力破解用户密码,NMAP端口扫描)
  • 鸿蒙原生应用/元服务开发-AGC分发如何配置版本信息(上)
  • 探索Scrapy中间件:自定义Selenium中间件实例解析
  • 渗透测试--3.中间人攻击
  • nginx/html关闭网页缓存方法
  • 华为防火墙 Radius认证
  • 用spring发送http请求
  • 赴日开发工程师是做什么的?
  • Wireshark的数据包它来啦!