TCP通信的实现和项目案例

news2024/9/23 11:22:39

TCP协议是面向连接的,在通信时客户端与服务器端必须建立连接。在网络通讯中,第一次主动发起通讯的程序被称作客户端(Client)程序,简称客户端,而在第一次通讯中等待连接的程序被称作服务器端(Server)程序,简称服务器。一旦通讯建立,则客户端和服务器端完全一样,没有本质的区别。

“请求-响应”模式:

        Socket类:发送TCP消息。

        ServerSocket类:创建服务器。

套接字Socket是一种进程间的数据交换机制。这些进程既可以在同一机器上,也可以在通过网络连接的不同机器上。换句话说,套接字起到通信端点的作用。单个套接字是一个端点,而一对套接字则构成一个双向通信信道,使非关联进程可以在本地或通过网络进行数据交换。一旦建立套接字连接,数据即可在相同或不同的系统中双向或单向发送,直到其中一个端点关闭连接。套接字与主机地址和端口地址相关联。主机地址就是客户端或服务器程序所在的主机通信端口。

在客户端和服务器中,分别创建独立的Socket,并通过Socket的属性,将两个Socket进行连接,这样,客户端和服务器通过套接字所建立的连接使用输入输出流进行通信。

TCP/IP套接字是最可靠的双向流协议,使用TCP/IP可以发送任意数量的数据。

实际上,套接字只是计算机上已编号的端口。如果发送方和接收方计算机确定好端口,他们就可以通信了。

客户端与服务器端的通信关系图:

TCP/IP通信连接的简单过程:

位于A计算机上的TCP/IP软件向B计算机发送包含端口号的消息,B计算机的TCP/IP软件接收该消息,并进行检查,查看是否有它知道的程序正在该端口上接收消息。如果有,它就将该消息交给这个程序。

要使程序有效地运行,就必须有一个客户端和一个服务器。

通过Socket地编程顺序:

        创建服务器ServerSocket,在创建时,定义ServerSocket的监听端口(在这个端口接收客户端发来的消息)

        ServerSocket调用accept()方法,使之处于阻塞状态。

        创建客户端Socket,并设置服务器的IP及端口。

        客户端发出连接请求,建立连接。

        分别取得服务器和客户端Socket的InputStream和OutputStream

        利用Socket和ServerSocket进行数据传输

        关闭流及Socket

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

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

相关文章

npm install 报错 ‘proxy‘ config is set properly. See: ‘npm help config‘

解决 参考链接:npm install 报错 ‘proxy‘ config is set properly. See: ‘npm help config‘-阿里云开发者社区 (aliyun.com)

Linux Ubuntu 20.04 安装DPDK方法指南

系统及DPDK版本 系统:Ubuntu 20.04 DPDK:20.11.10 Pktgen-DPDK:22.04.1 关于DPDK,其实Ubuntu的软件源中就已经包含了最新的Stable版本的DPDK,如果不想自己编译的话,直接 apt install dpdk 也是可以的 安…

python库(17):pkuseg库实现文本分词

1 pkuseg简介 PKUSEG,全称“北京大学语言计算与机器学习研究组开发的分词工具”,它就像一把锋利的瑞士军刀,帮助我们轻松切割文本。 在Python的文本处理领域,有很多分词工具,比如jieba、SnowNLP等。但是,…

iOS多界面传值

iOS多界面传值 文章目录 iOS多界面传值属性传值协议传值Block传值通知传值KVO传值概述使用步骤 总结 属性传值 这个传值方式和他的名字一样,我们主要还是通过属性对值进行一个传递,主要应用场景是前一个页面向后一个页面传值。 首先我们先要设置一个属…

哪里有ai写真软件免费方法?轻松获取写真的5个技巧

想在8月为自己的社交媒体更新个人形象吗?想要为即将到来的秋季增添一抹新意吗? AI写真软件是我们最佳的理想选择,通过简单的操作,我们可以在短时间内获得一张专属于自己的AI头像,让这个夏天的回忆更加生动。 特别是常…

C++进阶:设计模式___适配器模式

前言 在C的基础语法的学习后,更进一步为应用场景多写代码.其中设计模式是有较大应用空间. 引入 原本在写容器中适配器类有关的帖子,发现适配模式需要先了解,于是试着先写篇和适配器模式相关的帖子 理解什么是适配器类,需要知道什么是适配器模式.适配器模式是设计模式的一种.笔…

【论文阅读】PETRv2: A Unified Framework for 3D Perception from Multi-Camera Images

Q: 论文如何解决这个问题? A: 论文通过提出PETRv2框架来解决多相机图像的3D感知问题,具体方法包括以下几个关键点: 时间建模(Temporal Modeling): 通过3D坐标对齐(3D Coordinates Alignment&…

AI应用开发前景与目标

前景与目标 什么是AIGC AIGC最基本的能力是生成内容,包括文本、图像、视频、代码、3D内容或者几种媒介类型转换组合 形成的“多模态内容”。生成算法、预训练模型、多模态等技术累积融合,以及深度模型方面的 技术创新,共同催生了AIGC的大爆…

一篇文章教你如何在Android上使用QPython高效编程

导语:你是否想在Android设备上体验Python编程的乐趣?QPython是一款强大的Python脚本引擎,让你在手机上也能轻松编写和运行Python代码。本文将带你了解QPython的使用方法,让你随时随地开启编程之旅! 一、认识QPython Q…

File 34

package File;import java.awt.*; import java.io.File;public class file1 {public static void main(String[] args) {//创建FILE对象,指代某个具体的文件//路径分隔符File f1new File("C:/Users/SUI/Desktop/kaishi/nih.txt");// File f1new File(&quo…

推荐4款比转转大师还好用的专业数据恢复软件。

数据已经成为我们生活和工作中不可或缺的一部分;然而我们在很多的场景当中都会导致数据丢失;于是数据恢复工具便成了一些人的常用工具。很多人都知道转转大师数据恢复软件,但是也有其他的恢复软件也很好用。 1、福昕恢复 直通车:…

ArkTS通用属性

目录 一、尺寸设置 宽高,外边距,内边距,尺寸size layoutWeight constraintSize 二、位置设置 align direction position offset 使用Edge方式position,offset 三、布局约束 aspectRatio displayPriority 四、Flex布局 flexBas…

数字转罗马字符

import java.util.Scanner;/*** author gyf* ClassName Test* Date 2024/7/31 17:14* Version V1.0* Description : 方法一*/ public class Test {public static void main(String[] args) {Scanner scanner new Scanner(System.in);System.out.println("请输入一个字符串…

php类与对象

前言 欢迎来到我的博客 个人主页:北岭敲键盘的荒漠猫-CSDN博客 本文主要整理php类与对象相关的知识点 适合有编程基础的人观看 因为我这个也是整理第n语言,这些老套的概念就不再多啰嗦了。 直接整理相应的语法 感觉把php当第一语言学的人不太多了 快速理解类与对…

MyBatis的example.createCriteria()方法学习记录

目录 一、mapper的crud方法:1. insert方法insert(User user)insertSelective(User user) 2. select方法selectByPrimaryKey(id)selectByExample(example)selectCountByExample(example) 3. update方法updateByPrimaryKey(User user)updateByPrimaryKeySelective(User user)upda…

从零开始的MicroPython(六)ADC

上一篇:PWM 文章目录 ADC是什么ESP32的ADC代码 ADC是什么 ADC的英文全称是Analog / Digital Converter,是将模拟信号转换为数字信号的转换器,ADC是单片机读取传感器信号的常见方式。 我们日常生活中的信号,例如光照强度&#xf…

机器学习练手(三):基于决策树的iris 多分类和波士顿房价预测

总结:本文为和鲸python 可视化探索训练营资料整理而来,加入了自己的理解(by GPT4o) 原活动链接 原作者:vgbhfive,多年风控引擎研发及金融模型开发经验,现任某公司风控研发工程师,对…

python通过pyautogui自动给微信聊天窗口发消息

使用py脚本自动给聊天窗口发消息 1.突然的自我2.编写脚本玩一把i.先获取窗口位置ii.模拟聊天iii.疗效不错呢 1.突然的自我 突然想到pyautogui可以做那么事情, 那么是不是可以模拟聊天呢,如果结合现在的大模型chatGPT一边问然后得到结果一边自动和别人聊…

一文读懂新版Nacos的使用方式

文章目录 什么是 NacosNacos 架构Nacos 的本地启动 构建提供者 provider-nacos-8081搭建环境编写配置文件 application.yaml构建数据库编写业务实体类控制器类逻辑层与数据层接口 模块结构 构建消费者 consumer-nacos-8080搭建环境编写 yaml 文件配置编写业务编写配置类编写 Co…

Linux系统之NFS服务配置

准备工作 克隆两台linux,并更改其Mac地址,作为NFS客户端;将服务器更名为学号nfsserver,配置IP地址为192.168.学号.1 将客户端Client1更名为学号client1,配置IP地址为192.168.学号.2 将客户端Client2更名为学号clien…