套接字编程之接口(1)

简介: 套接字编程,通俗的来说:主要讲解的是如何编写一个网络通信程序1.网络通信的数据汇总都会包含一个完整的为五元组(sip[源端ip地址]、sport[源端端口]、dip[目的端IP地址]dport、protocol[协议]);五元组完成的描述了数据从哪里来到哪里去,用的是什么数据格式。2.网络通信,通常讨论的是俩个主机之间的通信:客户端&服务端 客户端网络通信程序:通常指的是用户使用的一端 服务端网络通信程序:通常指的是网络编写服务端程序的工作3.同时我们需要了解:客户端永远都是首先发起服务请求的一端,因为服务器是不知道客户端的地址的,现在用的是动态地址分配,每次上网地址可能发生改变,

学习套接字之前你需要知道的


套接字编程,通俗的来说:主要讲解的是如何编写一个网络通信程序


1.网络通信的数据汇总都会包含一个完整的为五元组(sip[源端ip地址]、sport[源端端口]、dip[目的端IP地址]dport、protocol[协议]);五元组完成的描述了数据从哪里来到哪里去,用的是什么数据格式。

2.网络通信,通常讨论的是俩个主机之间的通信:客户端&服务端

 客户端网络通信程序:通常指的是用户使用的一端

 服务端网络通信程序:通常指的是网络编写服务端程序的工作

3.同时我们需要了解:客户端永远都是首先发起服务请求的一端,因为服务器是不知道客户端的地址的,现在用的是动态地址分配,每次上网地址可能发生改变,开发客户端程序都写入了服务端的地址和端口,因此客户端是知道服务端的地址,还有一种原因,只有客户发送了请求,服务端才能提供对应的服务。

套接字编程


套接字


 套接字:socket(插座、接口)的翻译,通常表示的是系统提供给程序员实现网络通信的一套接口,为啥封装这些接口呢?因为我们知道,网络通信中有很多的协议, 所以在这套接口中就提供了足够充足的选择。我们通常使用的主要是两个协议的通信程序编写:传输层的TCP和UDP协议。


TCP协议和UDP协议区别

image.png

UDP协议的编写


UDP通信两端流程


服务端:


创建套接字–建立当前进程与网卡之间的关联,在内核中,创建了一个socket结构体

为套接字绑定地址信息,给创建的socket结构体,内部描述源端IP地址和端口

(1) 告诉系统收到的数据中凡是地址和端口是我绑定就交给我处理

(2)发送数据的时候,源端地址就是绑定的地址信息绑定的地址,必须是当前设备所拥有的地址

接收数据:从内核的socket结构体接收缓冲区中取出数据

发送数据:将数据放到内核socket结构体的发送缓冲区中,什么时候实际发送出去,由系统决定

不通信了,就关闭套接字,释放资源

客户端:


创建套接字

为套接字绑定地址信息(不推荐)

一个端口只能被一个网络进程占用。因此一旦客户端程序中绑定的固定的地址这个客户端就只能运行一个了,并且还有端口

冲突的风险。

发送数据

如果绑定了地址信息,则源端地址就是绑定的,如果没有绑定地址信息,则系统会选择一个合适的地址和端口进行自动绑定。

接收数据

不需要考虑,只需要从接收缓冲区取出数据即可

不通信了则关闭套接字释放资源。

image.png



目录
相关文章
|
数据采集 机器学习/深度学习 人工智能
中文竞技场大模型测评-龙虎榜
本次测评选取写作创作相关、代码相关、知识常识、中文游戏、人类价值观、NLP专业领域6大场景和20个细分维度,分别对通义Qwen-Chat-7B、凤凰Phoenix-7B、ChatGLM2-6B、moss-moon-003-sft等大模型进行了超过 200+ 道题的评测。测评旨在为大家提供有关这些模型在不同领域和维度上的表现,更好地选择适合自己需求的模型和应用,期待这次测评能够为AI模型领域的学习和研究提供有价值的参考和指导。
70866 5
|
druid 数据库
数据库连接池——Druid
数据库连接池——Druid 一、好处 更方便地获取连接对象,效率高 资源可以更好的重复利用
|
JSON 前端开发 关系型数据库
如何物业管理(园区式)系统的房屋及设备设施板块?(附架构图+流程图+代码参考)
本文介绍了园区物业管理系统中房屋与设备设施管理的核心内容,涵盖设备信息、巡检、报修、保养四大功能模块,提供系统架构图、数据模型设计、关键实现建议及可落地的代码样例。通过打通资产与运维流程,实现降本增效、减少停机与投诉,助力运维数据化、智能化。
|
JSON API 开发者
深度分析微店API接口,用Python脚本实现
微店作为知名移动端电商平台,其开放平台提供丰富的API接口,支持商品、订单、客户及营销管理。本文分析其API核心特性,并提供Python调用示例,助力开发者快速集成业务功能。
|
9月前
|
人工智能 测试技术 API
外包项目提效的另一种路径:多模型 AI 的工程价值
外包行业提效困局日益凸显:需求多变、人员流动、周期压缩。单模型AI仅局部优化,难破系统瓶颈。多模型AI以工程化协同替代“人海战术”,通过任务分派、异常降级、流程固化,提升交付稳定性与可扩展性,正成为外包效能升级新路径。
|
安全 网络协议 Linux
搭建FTP站点(Alibaba Cloud Linux 3)
vsftpd(very secure FTP daemon)是Linux下的一款小巧轻快、安全易用的FTP服务器软件。本教程介绍如何在Linux实例上安装并配置vsftpd。
搭建FTP站点(Alibaba Cloud Linux 3)
|
12月前
|
数据采集 搜索推荐 API
速来!小红书电商 API 接口,解锁种草数据新玩法
小红书电商API助力开发者高效获取种草数据,涵盖内容推荐、用户行为等核心字段。本文详解API调用、数据清洗与分析技巧,并提供Python实战代码,解锁个性化推荐、市场趋势预测等创新应用,助你快速掌握数据驱动玩法。(238字)
|
存储 数据挖掘 数据处理
Pandas高级数据处理:数据安全与隐私保护
在数字化时代,数据安全与隐私保护至关重要。本文介绍使用Pandas进行数据分析时常见的安全问题及解决方案,包括数据泄露风险、权限报错、数据类型转换错误等,并结合代码案例详细讲解如何避免和解决这些问题。同时,探讨高级策略如访问控制、匿名化、差分隐私及加密传输存储,确保数据分析合法合规。
608 7
如何撰写一份清晰有效的说明文档
在软件开发、产品开发以及各种工作任务中,编写一份清晰有效的说明文档是至关重要的。一份好的说明文档能够帮助读者理解事物的背景、目标和操作步骤,提高工作效率,减少沟通成本。
|
机器学习/深度学习 数据采集 数据挖掘
特征工程在营销组合建模中的应用:基于因果推断的机器学习方法优化渠道效应估计
因果推断方法为特征工程提供了一个更深层次的框架,使我们能够区分真正的因果关系和简单的统计相关性。这种方法在需要理解干预效果的领域尤为重要,如经济学、医学和市场营销。
935 1
特征工程在营销组合建模中的应用:基于因果推断的机器学习方法优化渠道效应估计