socket机制详解

Socket 通信机制详解 阅读详情

我另外一片博客中详细解析了Linux下tcp socket通信的过程,下面是我对socket机制更深一层的学习。


服务器和客户端创建过程简单描述如下:

服务器端
  一、创建服务器套接字(CREATE)。
  二、服务器套接字进行信息绑定(BIND),并开始监听连接(LISTEN)。
  三、接受来自客户端的连接请求(ACCEPT),并创建接收进程。
  四、开始数据传输(SEND、RECEIVE)。
  五、关闭套接字(CLOSESOCKET)。
客户机端
  一、创建客户机套接字(CREATE)。
  二、与远程服务器进行连接(CONNECT),如被接受则创建接收进程。
  三、开始数据传输(SEND、RECEIVE)。
  四、关闭套接字(CLOSESOCKET)


socket函数

SOCKET socket(int af, int type, int protocol);

af:指定应用程序使用的通信协议的协议族,对于TCP/IP协议族该参数设置为AN_INET,对于UNIX可建立本地Socket

type:指定创建socket类型:

流套接字类型(SOCK_STREAM):最常见的类型,基于TCP协议

数据报套接字类型(SOCK_DGRAM):即UDP数据报

原始套接字类型(SOCK_RAW):在IP层对套接字进行编程

protocol:指定应用程序所使用的通信协议。最常用的是TCP和UDP

流套接字和数据报套接字不能完成的任务,可以在原始套接字中得以实现。


Socket从传输模式上又分为端对端和点对点的连接,流套接字和数据报套接字都属于端对端的连接,因此需要绑定端口号。而原始套接字是基于IP协议的,属于点对点的传输模式,是没有端口这个概念的。比如常用的监测网络连接ping命令,就是基于ICMP协议的,它不存在端口的概念。Socket是一种服务,与其实现的语言无关。基于这个性质,我们能实现不同服务之间,不同语言之间的互联互通。

socket实质上提供了进程通信的端点。进程通信之前,双方首先必须各自创建一个端点,否则是没有办法建立联系并相互通信的。正如打电话之前,双方必须各自拥有一台电话机一样。


更多详细内容:百度socket词条http://baike.baidu.com/link?url=PsoIpr5DfvwlKhwf4hVgxCB7UhzIYkCroynJWdUhWLMo_D9VX39oaRdpEwoaUuu-RSaSvq8gGvSfuY85zKhFOa2-2O3OGm6GpchojKLyA4G


Socket通信机制 ## 什么是Socket? Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来说,一组简单的接口就是全部,让Socket去组织数据,以符合指定的协议。(见下图) 阅读详情

相关推荐

【通信篇】【Socket通信机制】

Socket通信机制是一种计算机网络通信协议,它是基于TCP/IP协议栈的应用层协议,提供了一组API(应用程序接口),允许不同的进程在不同计算机之间进行通信。socket通信一般涉及客户端和服务端两个socket。服务器端首先初始化Socket,然后与端口绑定,并对该端口进行监听。当客户端连接成功后,客户端会发送数据请求,服务器端接收并处理这些请求,然后将回应数据发送给客户端。客户端读取数据后,连接关闭。socket本身不是协议,是api接口,通过socket,我们可以使用Tcp/ip协议。

handsomethefirst的博客 4230

socket通信学习

本文介绍了Socket通信的基本原理和实现方法。Socket是网络通信的编程接口,基于IP地址和端口号组合实现不同设备间的数据传输。文章详细讲解了TCP/UDP协议的区别、Socket通信流程及核心函数,包括socket()、bind()、listen()、accept()、connect()等,并提供了TCP服务器/客户端和UDP通信的完整代码示例。此外,还演示了如何通过Socket实现HTTP请求和构建简单Web服务器。

2401_84271603的博客 664

socket 断线重连和心跳机制如何实现?

它是网络通信过程中端点的抽象表示,包含进行网络通信必须的五种信息:连接使用的协议,本地主机的 IP 地址,本地进程的通信端口,远程主机的 IP 地址,远程进程的通信端口。当服务端套接字监听到或者接收到客户端套接字的连接请求时,就会去响应客户端套接字的请求,建立一个新的线程,把服务端套接字的描述发 给客户端,一旦客户端确认了此描述,双方就正式建立连接。为此,客户端的套接字必须首先描述它要连接的服务端的套接字,指出服务端套接字的地址和端口号,然后就可以向服务端套接字提出连接请求。

编程语言开发、框架原理、编程思想、最佳实践技巧经验分享。致力于各种编程技术的技巧经验干货分享,讲解开发避坑技巧,追踪开发前沿技术,实战展开解决难题。 程序员小迷助您在编程路上越走越好! 2053

深入理解Socket:从原理到实战的网络通信全解析

Socket网络通信核心解析 本文系统讲解了Socket网络通信的核心原理与实战应用。Socket作为应用程序与网络协议栈的桥梁,通过IP地址和端口号实现端点间的数据交互。文章详细对比了TCP(面向连接、可靠传输)和UDP(无连接、高效传输)两种通信模式的特点及适用场景,并深入分析了TCP Socket的完整工作流程。通过Java代码示例,展示了TCP Socket服务端与客户端的实现方式,包括连接建立、数据传输和资源释放等关键环节。最后总结了Socket编程中的注意事项,帮助开发者掌握网络通信的核心技术。

weixin_46136757的博客 1371

详解Java Socket的工作机制

Socket的来龙去脉 下面的分析主要是参阅了计算机网络(谢希仁第7版)进行总结的,从系统调用—>应用编程接口API—>套接字接口来分析Socket的来龙去脉,当然维基百科上也有对Socket的详细解释 1. 系统调用 大多数操作系统使用系统调用的机制在应用程序和操作系统之间传递控制权。对程序员来说,系统调用和一般程序设计中的函数调用非常相似 2. 应用编程接口AP...

pjmike的博客 2235

Qt实现Socket断线重连机制

简述 创建 Thread 类 继承 QThread,实现用单独的线程接收 socket 数据。 当 socket 与主机断开时,自动触发 OnDisConnect() 函数,从而在 run() 中执行自动重连代码段。 想主动断开 socket 连接时,把 m_isThreaStopped 设置为 true 即可。 简述 类的源码 类的使用 效果图类的源码Thread.h#ifndef THREAD

leyou2018 的博客 2万+

SOCKet 编程 简介

“一切皆Socket!” 话虽些许夸张,但是事实也是,现在的网络编程几乎都是用的socket。 ——有感于实际编程和开源项目研究。 我们深谙信息交流的价值,那网络中进程之间如何通信,如我们每天打开浏览器浏览网页时,浏览器的进程怎么与web服务器通信的?当你用QQ聊天时,QQ进程怎么与服务器或你好友所在的QQ进程通信?这些都得靠socket?那什么是socket?socket的类型有哪些?还有...

weixin_34032779的博客 232

Socket 行为分发重连机制

Socket 行为分发重连机制

Hanyang Li的专栏 415

java socket机制_java socket机制

JAVA Socket超时浅析套接字或插座(socket)是一种软件形式的抽象,用于表达两台机器间一个连接的“终端”。针对一个特定的连接,每台机器上都有一个“套接字”,可以想象它们之间有一条虚拟的“线缆”。JAVA有两个基于数据流的套接字类:ServerSocket,服务器用它“侦听”进入的连接;Socket,客户端用它初始一次连接。侦听套接字只能接收新的连接请求,不能接收实际的数据包。套接字是基...

weixin_39531178的博客 101

精通Socket通信及心跳重连机制

在任何基于网络的通信系统中,断线重连是指在网络连接中断或失败后,系统能够自动尝试重新连接到远程服务器的过程。这种机制对于确保用户的数据传输不因暂时的网络问题而中断至关重要。例如,在即时通讯应用、在线游戏或远程办公软件中,断线重连机制可以避免用户因为网络短暂的问题而失去连接,从而导致会话中断或数据丢失。消息摘要算法,如MD5或SHA系列,可以生成数据的固定长度的摘要。任何对数据的微小更改都会导致生成的摘要完全不同,从而确保了数据的完整性。# 消息摘要示例。

weixin_29607511的博客 1075

Python + Google AI 自动修复 Sonar Bug 实践

在工作中总会遇到种种不期而至的需求,比如前段时间突然要修复所有 Sonar Bug,涉及各种琐碎的代码风格问题,包括但不限于语法不规范、废弃注释等问题。这些项目都已经持续开发几年了,Sonar 上的问题层出不穷,各种问题已经累积到了上万个,手动修复不但费时费力,而且过程异常枯燥。

子洋 Blog 2415

python socket通信 心跳_Python3 Socket与Socket心跳机制简单实现

标签:什么是 Socket?Socket又称"套接字",应用程序通常通过"套接字"向网络发出请求或者应答网络请求,使主机间或者一台计算机上的进程间可以通讯。socket()函数Python 中,我们用 socket()函数来创建套接字,语法格式如下:socket.socket([family[, type[, proto]]])参数family: 套接字家族可以使AF_UNIX或者AF_INETt...

weixin_39708822的博客 659

PX4固件下VTOL固定翼的3种起飞方式对比:手抛vs弹射vs跑道

本文深度解析PX4固件下VTOL固定翼的三种起飞方式:手抛、弹射与跑道起飞,对比其技术差异与适用场景。通过详细的参数配置和工程实践指南,帮助开发者优化起飞性能,提升无人机在不同环境下的适应性和可靠性。文章特别针对PX4飞控系统的最新特性进行了技术探讨。

weixin_30296405的博客 87

socket浅析以及socket心跳机制

最近在看socket编程的一些内容,想总结下。先从理论知识总结下,不涉及代码。1.socket是什么?socket(套接字)是应用层和TCP/IP协议族通信的中间软件抽象层,是它的一组接口。包含进行网络通讯必须的五种信息:连接使用的协议,本地主机的IP地址,本地进程的协议端口,远地主机的IP地址,远地进程的协议端口。2.socket能干嘛?多个TCP连接或者多个应用程序进程可能需要通过同一个TCP...

oik_ios的专栏 3454

一文帮你彻底搞懂ARM Debug Interface之SWD(转)

ARM的文档写的已经很好了,但是关于上电以后的第一时间应该怎么操作,依然写的不够清晰,导致我第一次用的时候还是费了一些周折。今天做一个详细的梳理,希望能够帮助到更多的朋友。BTW, ARM_Cortex-M0/3 DesignStart系列会持续更新,只是中间可能会穿插其他知识点。SWD是Serial Wire Debug的简称,翻译成中文是”串行线调试”。

2302_79847220的博客 6861

东方马达步进电机AZM66AK-HS100+AZD-KD调试经验记录

东方马达步进电机AZM66AK-HS100+AZD-KD调试经验记录(20170803YC) 本次总结主要实现的功能如下:用MEXE02软件在步进电机驱动器中设置好控制动作,每个控制动作有一个特定的编号。之后通过PC和驱动器之间的485通讯,发送相关指令,使步进电机按照一定编号的控制动作运转。 参考资料:东方马达步进电机AZM66AK-HS100+AZD-KD的产品手册,可在官网下载。 A....

dahailuoa6的博客 1万+

Socket进程通信机制

Socket进程通信机制 1、Socket通常称为“套接字”,用于描述IP地址和端口,是一个通信链的句柄。 2、应用程序通过套接字向网络发出请求或者应答网络请求。 3、Socket既不是一个程序,也不是一种协议,其只是操作系统提供的通信层的一组抽象API。 4、进程通信的相关概念:   网间进程通信要解决的是不同主机进程间相互通信问题。为此,首先要解决的是网间进程标识问题。同一主机上,不...

cmyperson的博客 924

C#读取CAD文件(dwg/dxf)并处理

项目要求识别CAD图纸(图纸内容与现实事物比例是1:1)中的内容,并提取出一些关键信息。这里的CAD图纸是指CAD文件,包含多种格式,dwg/dxf/dwf/stl/pdf等等。识别其中内容,主要指文件中的图元信息(也叫实体Entity),指线段、圆弧、矩形等图形元素。得到图元基础信息(比如长度、坐标、粗细)后,进一步做处理(如得到交点、得到线段间间隔、圆弧与线段切点等)。听起来有点难,因为作为软件工程师,对CAD相关事物并不了解,它是未知的;

三千幻想乡 1万+

linux socket 绑定机制的研究

linux socket 绑定机制的研究   1.    概述:在多 link 环境中,如何保证数据在正确的 link 上传输是一个棘手的问题。 本文主要分析 linux socket 绑定机制的实现,从而帮助开发人员更好的了解 socket 绑定的本质。2.    linux kernel 提供给 user space 的接口linux 提供一个新的 sets

4473

云桌面如何部署?云桌面系统方案部署详细教程

云桌面作为一种比较新的技术工具,核心解决的场景是方便设计师的灵活办公,本身技术就是非常的灵活性,所以在安装部署方面青椒云也做到了十足的灵活。

2301_79113726的博客 1633

STM32嵌入式标准化封装五层架构设计与工程实践

在嵌入式系统开发中,代码封装是保障可维护性、可复用性与可靠性的核心工程能力。其本质是通过分层抽象(硬件抽象层→设备驱动层→应用逻辑层)解耦硬件依赖与业务逻辑,实现跨芯片移植、多任务安全及确定性实时响应。关键技术包括HAL库重构以消除硬编码初始化、驱动层提供同步/异步/事件驱动三类UART接口、中断优先级矩阵管理确保响应确定性、双阶段时钟配置兼顾启动鲁棒性与运行能效,以及面向Modbus等工业协议的语义化API封装。这些实践直击STM32项目中引脚变更难、HAL裸调风险高、中断处理不安全、时钟配置僵化等典型痛

weixin_35019679的博客 68

TCP Socket 中单向传输与双向传输的结束机制详解

操作单向传输双向传输结束方式直接关闭 Socket 或流必须显式调用死锁风险无(单方向数据流)高(双方互相等待)数据边界处理依赖连接关闭通知需显式 EOF 或协议标记资源管理简单(关闭 Socket 即可)需精细控制输入/输出流。

m0_75107803的博客 807

YOLO26涨点改进 | 独家创新,特殊场景检测篇 | TGRS 2025 | 引入FAENet特征自适应增强网络,专注于恶劣天气条件下的目标检测(低光场景、雾天场景、雨雪场景、复杂环境等)即插即用

🔥本文提出了一种名为FAENet的特征自适应增强网络,可有效提升YOLO26在恶劣天气条件下的目标检测性能。FAENet通过拉普拉斯金字塔分解思想,将输入特征分为低频和高频两部分进行针对性增强:低频分支强化全局轮廓,高频分支增强边缘纹理细节。该模块设计轻量、可端到端训练,在不改变原始图像分布的前提下,显著缓解雾霾、低照度等复杂环境造成的特征退化问题。实验表明,该方法在多个恶劣天气数据集上超越了当前最优检测器,同时保持了轻量级和高速度特性。

Ai缝合怪、助力小伙伴高效发论文 334

Java Socket 工作机制

Java Socket 工作机制 这里是引用 Socket 这个概念没有对应到一个具体的实体,他是描述计算机之间完成相互通信的一种抽象功能。打个比方,可以吧Socket比作为两个城市之间的工作的交通工具,有了它,就可以在城市之间来回穿梭了。交通工具有多种,每种交通工具也有相应的交通规则的。Socket也一样,也有多种。大部分情况下我们使用的都是基于TCP/IP的流套接字,它是一种稳定的通讯协议。 ​ 图1 Socket 通讯实例 主机A的应用程序要能和主机B的应用程序通信,通过Socket建立连接

m0_37750839的博客 269

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

安卓 socket通信原理 心跳机制 面试必备

socket 概念 套接字(socket)是通信的基石,是支持 TCP/IP 协议的网络通信的基本操作单元。它是网 络通信过程中端点的抽象表示,包含进行网络通信必须的五种信息:连接使用的协议,本地 主机的 IP 地址,本地进程的协议端口,远地主机的 IP 地址,远地进程的协议端口。 为了区别不同的应用程序进程和连接,许多计算机操作系统为应用程序与 TCP/IP 协议交互 提供了套接字(Socket)接口。应 用层可以和传输层通过 Socket 接口,区分来自不同应用程 序进程或网络连接的通信,实现数据传输的

blithe影子 1216

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Podman 中的 Socket 激活机制详解

Podman 中的 Socket 激活机制详解 【免费下载链接】podman Podman: A tool for managing OCI containers and pods. 项目地址: https://gitcode.c...

gitblog_00980的博客 429

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

上一篇: Linux TCP/IP通讯建立
下一篇: C语言指针操作
itisyang
博客等级 码龄12年 10粉丝 24原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值