TCP协议简单总结
TCP:传输控制协议
-
特点:面向连接、可靠通信
-
TCP的最终目的:要保证在不可靠的信道上实现可靠的传输
-
TCP主要有三个步骤实现可靠传输:三次握手建立连接,传输数据进行确认,四次挥手断开连接
-
三次握手建立可靠连接。

-
建立连接后会建立可靠的通信管道

-
四次握手断开连接

-
TCP通信之客户端开发


客户端发送信息:
import java.io.*;
import java.net.*;public class TCPClient {public static void main(String[] args) {final String serverAddress = "127.0.0.1"; // 服务器地址final int serverPort = 8080; // 服务器端口try {// 连接到服务器Socket socket = new Socket(serverAddress, serverPort);System.out.println("Connected to server.");// 发送消息到服务器sendMessage(socket, "Hello, Server!");// 接收服务器的响应String response = receiveMessage(socket);System.out.println("Response from server: " + response);// 关闭连接socket.close();} catch (IOException e) {e.printStackTrace();}}private static void sendMessage(Socket socket, String message) throws IOException {PrintWriter out = new PrintWriter(socket.getOutputStream(), true);out.println(message);}private static String receiveMessage(Socket socket) throws IOException {BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));return in.readLine();}
}
TCP通信之服务端开发


服务端接收信息
import java.io.*;
import java.net.*;public class TCPExample {public static void main(String[] args) {final int PORT = 8080;try {// 启动服务器ServerSocket serverSocket = new ServerSocket(PORT);System.out.println("Server started. Waiting for connections...");// 等待客户端连接Socket clientSocket = serverSocket.accept();System.out.println("Client connected: " + clientSocket);// 处理客户端请求handleClient(clientSocket);// 关闭服务器serverSocket.close();} catch (IOException e) {e.printStackTrace();}}public static void handleClient(Socket clientSocket) {try {// 接收客户端消息BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));String message = in.readLine();System.out.println("Received message from client: " + message);// 向客户端发送响应PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true);out.println("Hello, Client!");// 关闭连接clientSocket.close();} catch (IOException e) {e.printStackTrace();}}
}
相关文章:
TCP协议简单总结
TCP:传输控制协议 特点:面向连接、可靠通信 TCP的最终目的:要保证在不可靠的信道上实现可靠的传输 TCP主要有三个步骤实现可靠传输:三次握手建立连接,传输数据进行确认,四次挥手断开连接 三次握手建立可靠…...
【Qt 实现录音】
Qt 实现录音源代码: #include <QAudioInput> #include <QAudioDeviceInfo> #include <QAudioRecorder> #include <QFile> #include...
python:算法竞赛入门之一
计算 斐波那契数列(Fibonacci sequence),不受长整型位数限制。 编写 fibonacci.py 如下 # -*- coding: utf-8 -*- """ 计算 斐波那契数列(Fibonacci sequence)""" import sys from …...
【大数据与云计算】虚拟机安装Linux
前言:使用Linux系统对大数据学习必不可少,本文主要介绍虚拟机安装linux的流程 文章目录 一、 下载VMware二、下载Linux三、安装Linux 一、 下载VMware 官网链接 下载VMware-player,一直下一步安装即可。 二、下载Linux 点击链接直接下载&…...
从零开始编写一个cmake构建脚本
简介 本文档介绍cmake构建脚本编写,包含的一些主要元素和命名规范。 cmake构建脚本编写步骤 cmake构建工具版本要明确 # 命令名字要小写,这条语句要求构建工具至少需要版本为3.12或以上 cmake_minimum_required (VERSION 3.12)工程名及库的版本号明确…...
pringboot2集成swagger2出现guava的FluentIterable方法不存在
错误信息 Description: An attempt was made to call a method that does not exist. The attempt was made from the following location: springfox.documentation.spring.web.scanners.ApiListingScanner.scan(ApiListingScanner.java:117) The following method did not ex…...
进程线程的关系
举个例子 滑稽老师吃100只鸡 如何加快滑稽老师吃鸡的效率?? 有一个方案,搞两个房间,两个滑稽老师 一个滑稽吃50只鸡,速度一定会大幅度增加 多进程的方案 创建新的进程 就需要申请更多的资源(房间和…...
一些 VLP 下游任务的相关探索
目录 一、Image-Text Retrieval (ITR , 图像文本检索) 任务目的: 数据集格式 训练流程 evaluation流程 实际使用推测猜想 二、Visual Question Answering (VQA , 视觉问答) 任务目的 数据集格式 训练流程 demo以及评估流…...
【opencv】示例-pca.cpp PCA图像重建演示
// 加载必要的头文件 #include <iostream> // 用于标准输入输出流 #include <fstream> // 用于文件的输入输出 #include <sstream> // 用于字符串的输入输出流操作#include <opencv2/core.hpp> // OpenCV核心功能的头文件 #include "o…...
C语言中的编译和链接
系列文章目录 文章目录 编辑 系列文章目录 文章目录 前言 一、 翻译环境和运行环境 二、 翻译环境 2.1 编译 2.1.1 预处理 2.1.2 编译 2.1.2.1 词法分析 : 2.1.2.2 语法分析 2.1.2.3 语义分析 2.1.3 汇编 2.2 链接 三、运行环境 前言 在我们平常的写代码时,我们很…...
如何将三方库集成到hap包中——通过IDE集成cmak构建方式的C/C++三方库
简介 cmake构建方式是开源三方库的主流构建方式。DevEco Studio目前以支持cmake的构建方式。本文将通过在IDE上适配cJSON三方库为例讲来解如何在IDE上集成cmake构建方式得三方库。 创建工程 在开发进行三方库适配以及napi接口开发前,我们需要创建一个三方库对应的…...
Towards Street-Level Client-Independent IP Geolocation(2011年)(第二部分)
被引次数:306 Wang Y, Burgener D, Flores M, et al. Towards {Street-Level}{Client-Independent}{IP} Geolocation[C]//8th USENIX Symposium on Networked Systems Design and Implementation (NSDI 11). 2011. 接着Towards Street-Level Client-Independent IP Geolocati…...
软件测试过程和测试生命周期
众所周知,软件生命周期包括,需求阶段、设计阶段、设计构建阶段、测试周期阶段、最后测试、实施阶段、最后运维和维护验收。每个阶段都需要在软件开发的生命周期中从前一阶段交付。需求转化为设计,设计转化为开发和开发成测试,经过…...
python-study-day1
ps:前言 可做毕设,html,web,app,小程序,bug修改,可加急 作者自述 作为一名前端开发工程师,这个大环境不好的情况下,我试过我前端接单子但是没有后端,…...
【Apache2】彻底删除 Apache2 服务器
要彻底删除 Apache2 服务器,需要卸载 Apache2 软件包并删除其配置文件和数据文件。在 Ubuntu 上,可以按照以下步骤来完成: 停止 Apache2 服务: sudo systemctl stop apache2卸载 Apache2 软件包: sudo apt-get purge a…...
C#:成绩等级转换
任务描述 本关任务:给出一百分制成绩,要求输出成绩等级‘A’、‘B’、‘C’、‘D’、‘E’。 90分以上为A 80-89分为B 70-79分为C 60-69分为D 60分以下为E,如果输入数据不在0~100范围内,请输出一行:“Score is error!”…...
每日OJ题_01背包③_力扣494. 目标和(dp+滚动数组优化)
目录 力扣494. 目标和 问题解析 解析代码 滚动数组优化代码 力扣494. 目标和 494. 目标和 难度 中等 给你一个非负整数数组 nums 和一个整数 target 。 向数组中的每个整数前添加 或 - ,然后串联起所有整数,可以构造一个 表达式 : …...
vue3+element plus图片预览点击按钮直接显示图片的预览形式
1 需求 直接上需求: 我想要直接点击下面这个“预览”按钮,然后呈现出预览图片的形式 ok,需求知道了,下面让我们来看看如何实现吧 ~ 2 实现 template部分 <el-buttontype"primary"size"small"click&qu…...
GAMS104 现代游戏引擎 2
渲染的难点可以分为一下三部分:如何计算入射光线、如何考虑材质以及如何实现全局光照。 渲染的难点之一在于阴影,或者说是光的可见性。如何做出合适的阴影效果远比想象中要难得多,在实践中往往需要通过大量的技巧才能实现符合人认知的阴影效…...
spring boot学习第十七篇:OAuth2概述及使用GitHub登录第三方网站
0. 导言 我们在浏览器上可以访问成百上千个网站,使用每个网站的服务一般都要先注册账号,那么我们为了更好地记忆,一般都会在多个网站使用相同的账号和密码进行注册。那么问题就来了,如果在你注册的网站中有某些个网站的系统设计不…...
Python并发革命进行时:GIL移除后你必须掌握的5种内存序模型(x86/ARM/RISC-V实测对比)
第一章:Python无锁GIL环境下的并发模型架构总览传统CPython解释器受全局解释器锁(GIL)制约,无法真正实现多线程CPU并行。而“无锁GIL环境”并非指移除GIL本身,而是指在GIL被主动释放、绕过或由替代运行时(如…...
收藏!非计算机专业也能转AI大模型?小白/程序员必看,打消转行所有顾虑
当下人工智能(大模型)领域发展势头迅猛,成为职场人眼中的“新风口”,不少就业者都想抓住这波新兴行业的红利,跻身AI赛道。但很多人卡在了起点——担心自己的专业不对口、过往经历不相关,纠结犹豫迟迟不敢迈…...
大数据运维 | 项目一:大数据分布式集群搭建全攻略
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 前言 作为一名大数据运维工程师,你是否遇到过这样的问题: 问题场景描述1机器A可正常上网,但机器B无法连接网…...
突破远程桌面限制:RDP Wrapper实现多用户并发连接的创新解决方案
突破远程桌面限制:RDP Wrapper实现多用户并发连接的创新解决方案 【免费下载链接】rdpwrap RDP Wrapper Library 项目地址: https://gitcode.com/gh_mirrors/rd/rdpwrap 副标题:适用于Windows Vista至Windows 11全版本的远程桌面功能扩展工具 在…...
从零配置YOLOv5与RealSense D405:深度测距与目标检测的完整流程指南
从零构建YOLOv5与RealSense D405的智能视觉系统:深度感知与目标检测实战手册 当计算机视觉遇上深度感知,会碰撞出怎样的火花?YOLOv5作为当前最流行的实时目标检测框架,与Intel RealSense D405深度相机结合,能够为机器…...
VSCode里藏着的绘图神器:Live Preview搭配Mermaid插件,边写代码边出图真香了
VSCode绘图革命:用Mermaid实现代码与图表无缝协同 在IDE里切换窗口查看流程图的日子该结束了。作为每天与代码打交道的开发者,我们早已厌倦了在Visio、ProcessOn和代码编辑器之间反复横跳的繁琐操作。Mermaid语法配合VSCode的实时预览功能,正…...
Deepfake Offensive Toolkit Docker部署:跨平台解决方案详解
Deepfake Offensive Toolkit Docker部署:跨平台解决方案详解 【免费下载链接】dot The Deepfake Offensive Toolkit 项目地址: https://gitcode.com/gh_mirrors/dot/dot Deepfake Offensive Toolkit(简称dot)是一款功能强大的深度学习…...
基于 MATLAB 的非线性优化算法实现:BFGS + Armijo 线搜索
基于matlab的非线性优化算法实现 通过梯度下降法(具体实现为 BFGS 方法),并结合 Armijo 线搜索方法,对一个多项式目标函数进行优化,找到其最优解。 开发语言:matlab非线性优化问题在科学计算和工程应用中非…...
OpCore Simplify:终极指南!让黑苹果配置从8小时缩短到45分钟的自动化神器
OpCore Simplify:终极指南!让黑苹果配置从8小时缩短到45分钟的自动化神器 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simplify 还在…...
如何构建你的第一个Python高频交易模型:完整实战指南
如何构建你的第一个Python高频交易模型:完整实战指南 【免费下载链接】High-Frequency-Trading-Model-with-IB A high-frequency trading model using Interactive Brokers API with pairs and mean-reversion in Python 项目地址: https://gitcode.com/gh_mirror…...
