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

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:算法竞赛入门之一

计算 斐波那契数列&#xff08;Fibonacci sequence&#xff09;&#xff0c;不受长整型位数限制。 编写 fibonacci.py 如下 # -*- coding: utf-8 -*- """ 计算 斐波那契数列&#xff08;Fibonacci sequence&#xff09;""" import sys from …...

【大数据与云计算】虚拟机安装Linux

前言&#xff1a;使用Linux系统对大数据学习必不可少&#xff0c;本文主要介绍虚拟机安装linux的流程 文章目录 一、 下载VMware二、下载Linux三、安装Linux 一、 下载VMware 官网链接 下载VMware-player&#xff0c;一直下一步安装即可。 二、下载Linux 点击链接直接下载&…...

从零开始编写一个cmake构建脚本

简介 本文档介绍cmake构建脚本编写&#xff0c;包含的一些主要元素和命名规范。 cmake构建脚本编写步骤 cmake构建工具版本要明确 # 命令名字要小写&#xff0c;这条语句要求构建工具至少需要版本为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只鸡 如何加快滑稽老师吃鸡的效率&#xff1f;&#xff1f; 有一个方案&#xff0c;搞两个房间&#xff0c;两个滑稽老师 一个滑稽吃50只鸡&#xff0c;速度一定会大幅度增加 多进程的方案 创建新的进程 就需要申请更多的资源&#xff08;房间和…...

一些 VLP 下游任务的相关探索

目录 一、Image-Text Retrieval (ITR , 图像文本检索) 任务目的&#xff1a; 数据集格式 训练流程 evaluation流程 实际使用推测猜想 二、Visual Question Answering &#xff08;VQA &#xff0c; 视觉问答&#xff09; 任务目的 数据集格式 训练流程 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 链接 三、运行环境 前言 在我们平常的写代码时&#xff0c;我们很…...

如何将三方库集成到hap包中——通过IDE集成cmak构建方式的C/C++三方库

简介 cmake构建方式是开源三方库的主流构建方式。DevEco Studio目前以支持cmake的构建方式。本文将通过在IDE上适配cJSON三方库为例讲来解如何在IDE上集成cmake构建方式得三方库。 创建工程 在开发进行三方库适配以及napi接口开发前&#xff0c;我们需要创建一个三方库对应的…...

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…...

软件测试过程和测试生命周期

众所周知&#xff0c;软件生命周期包括&#xff0c;需求阶段、设计阶段、设计构建阶段、测试周期阶段、最后测试、实施阶段、最后运维和维护验收。每个阶段都需要在软件开发的生命周期中从前一阶段交付。需求转化为设计&#xff0c;设计转化为开发和开发成测试&#xff0c;经过…...

python-study-day1

ps&#xff1a;前言 可做毕设&#xff0c;html&#xff0c;web&#xff0c;app&#xff0c;小程序&#xff0c;bug修改&#xff0c;可加急 作者自述 作为一名前端开发工程师&#xff0c;这个大环境不好的情况下&#xff0c;我试过我前端接单子但是没有后端&#xff0c…...

【Apache2】彻底删除 Apache2 服务器

要彻底删除 Apache2 服务器&#xff0c;需要卸载 Apache2 软件包并删除其配置文件和数据文件。在 Ubuntu 上&#xff0c;可以按照以下步骤来完成&#xff1a; 停止 Apache2 服务&#xff1a; sudo systemctl stop apache2卸载 Apache2 软件包&#xff1a; sudo apt-get purge a…...

C#:成绩等级转换

任务描述 本关任务&#xff1a;给出一百分制成绩&#xff0c;要求输出成绩等级‘A’、‘B’、‘C’、‘D’、‘E’。 90分以上为A 80-89分为B 70-79分为C 60-69分为D 60分以下为E&#xff0c;如果输入数据不在0~100范围内&#xff0c;请输出一行&#xff1a;“Score is error!”…...

每日OJ题_01背包③_力扣494. 目标和(dp+滚动数组优化)

目录 力扣494. 目标和 问题解析 解析代码 滚动数组优化代码 力扣494. 目标和 494. 目标和 难度 中等 给你一个非负整数数组 nums 和一个整数 target 。 向数组中的每个整数前添加 或 - &#xff0c;然后串联起所有整数&#xff0c;可以构造一个 表达式 &#xff1a; …...

vue3+element plus图片预览点击按钮直接显示图片的预览形式

1 需求 直接上需求&#xff1a; 我想要直接点击下面这个“预览”按钮&#xff0c;然后呈现出预览图片的形式 ok&#xff0c;需求知道了&#xff0c;下面让我们来看看如何实现吧 ~ 2 实现 template部分 <el-buttontype"primary"size"small"click&qu…...

GAMS104 现代游戏引擎 2

渲染的难点可以分为一下三部分&#xff1a;如何计算入射光线、如何考虑材质以及如何实现全局光照。 渲染的难点之一在于阴影&#xff0c;或者说是光的可见性。如何做出合适的阴影效果远比想象中要难得多&#xff0c;在实践中往往需要通过大量的技巧才能实现符合人认知的阴影效…...

spring boot学习第十七篇:OAuth2概述及使用GitHub登录第三方网站

0. 导言 我们在浏览器上可以访问成百上千个网站&#xff0c;使用每个网站的服务一般都要先注册账号&#xff0c;那么我们为了更好地记忆&#xff0c;一般都会在多个网站使用相同的账号和密码进行注册。那么问题就来了&#xff0c;如果在你注册的网站中有某些个网站的系统设计不…...

用ChatGPT 10分钟生成TikTok爆款脚本:5步工作流+3类高转化话术模板(附Prompt库下载)

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;ChatGPT TikTok视频创意 在短视频爆发式增长的今天&#xff0c;TikTok 内容创作者亟需高效、可复用的创意生成机制。ChatGPT 可作为智能脚本引擎&#xff0c;将抽象主题快速转化为结构化、高传播性的视…...

兔抗FANCI抗体亲和纯化,IP-WB全流程兼容设计,一站式解决FANCI蛋白分析功能

产品概述由艾美捷Bethyl Laboratories推出的FANCI抗体&#xff08;货号A301-254A&#xff09;是一款针对人源范可尼贫血互补组I蛋白&#xff08;FANCI&#xff09;的兔多克隆抗体&#xff0c;经抗原亲和纯化&#xff0c;以未偶联完整IgG形式提供。该抗体特异性识别人源FANCI蛋白…...

非洲车商采购中国二手车的完整流程:从找车到提车七步走

操作目标&#xff1a;帮助非洲车商、进口商、批发商及其采购代理&#xff0c;系统性地完成中国二手车采购。适用对象&#xff1a;想了解采购中国二手车完整流程的海外B端买家。采购流程SOP第一步&#xff1a;找车源渠道说明适用场景广州出口基地南沙、番禺、白云实地考察线上平…...

设计器模版底图,一直渲染错误,是因为第一张图变形后内存中图片数据被改了,其他尺码一直错误

这其实是你们现在更需要的组合&#xff1a;不是只看 decode()&#xff0c;而是再确认“这次 decode 对应的还是当前这张图”。再确认“这次 decode 对应的还是当前这张图” 是怎么做到的&#xff0c;详细列举代码我直接从现在这次改动的代码里&#xff0c;把"确认图片身份…...

深入USB总线:图解移远EC20在Linux下如何从硬件接口到虚拟出5个ttyUSB

深入USB总线&#xff1a;图解移远EC20在Linux下如何从硬件接口到虚拟出5个ttyUSB 当我们拆解一台嵌入式设备时&#xff0c;常会遇到4G模块这类看似独立却又深度集成的组件。以移远EC20为例&#xff0c;它表面上通过MiniPCIE接口与主机通信&#xff0c;实则内部隐藏着一套复杂的…...

极域电子教室破解终极指南:5步重获电脑控制权

极域电子教室破解终极指南&#xff1a;5步重获电脑控制权 【免费下载链接】JiYuTrainer 极域电子教室防控制软件, StudenMain.exe 破解 项目地址: https://gitcode.com/gh_mirrors/ji/JiYuTrainer 你是否曾在上机课时被极域电子教室的全屏广播困住&#xff0c;想要操作电…...

基于MCP协议构建智能Telegram助手:连接AI与外部服务的实践指南

1. 项目概述&#xff1a;一个连接AI与Telegram的智能桥梁如果你正在寻找一种方法&#xff0c;让你在Telegram上使用的AI助手&#xff08;比如ChatGPT、Claude等&#xff09;能够“活”起来&#xff0c;不仅能聊天&#xff0c;还能帮你查天气、看新闻、管理待办事项&#xff0c;…...

初创公司如何用Taotoken统一管理多个AI模型的API密钥

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 初创公司如何用Taotoken统一管理多个AI模型的API密钥 对于初创公司而言&#xff0c;在业务中集成多个大语言模型&#xff08;如GPT…...

如何用HF Patch解决Koikatu游戏三大痛点:200+插件整合的完整指南

如何用HF Patch解决Koikatu游戏三大痛点&#xff1a;200插件整合的完整指南 【免费下载链接】KK-HF_Patch Automatically translate, uncensor and update Koikatu! and Koikatsu Party! 项目地址: https://gitcode.com/gh_mirrors/kk/KK-HF_Patch 如果你正在玩Koikatu!…...

终极指南:Marketing-for-Engineers心理学应用——影响用户决策的12个心理效应

终极指南&#xff1a;Marketing-for-Engineers心理学应用——影响用户决策的12个心理效应 【免费下载链接】Marketing-for-Engineers A curated collection of marketing articles & tools to grow your product. 项目地址: https://gitcode.com/gh_mirrors/ma/Marketin…...