套接字编程之接口(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



目录
相关文章
|
人工智能 弹性计算 边缘计算
2020年国内十大云计算商排名榜
云计算在中国经过数年发展后,技术和市场都越发成熟。随着性能和稳定的提高,成本的降低,个人和企业用户都开始逐步接受云服务,但无论在全球范围还是中国范围内,云计算市场还只是起步阶段。 中国云市场来看,表面看似巨头已经瓜分天下,但实际上,出色的新秀在不断涌现,利用自己的特色优势在细分市场中分一杯羹。笔者根据企业实力,产品性能、性价比、服务评价等方面选出了市场认可度高的中国十大公有云计算服务商云计算服务商。
|
数据可视化 Java Linux
ElasticSerach学习(五)-基于ES+filebeat+logstash实现日志收集系统
ElasticSerach学习(五)-基于ES+filebeat+logstash实现日志收集系统
1115 0
|
消息中间件 Java 网络安全
阿里RocketMQ安装服务器及客户端
阿里RocketMQ安装服务器及客户端
1134 0
|
数据可视化 调度 计算机视觉
目标检测的Tricks | 【Trick5】学习率调优方法——warmup
目标检测的Tricks | 【Trick5】学习率调优方法——warmup
1152 0
目标检测的Tricks | 【Trick5】学习率调优方法——warmup
|
前端开发 关系型数据库 Java
国外开源IoT平台Thingsboard社区版本(V3.3.2)在Win10环境下进行源码编译及运行指南
国外开源IoT平台Thingsboard社区版本(V3.3.2)在Win10环境下进行源码编译及运行指南
1827 0
国外开源IoT平台Thingsboard社区版本(V3.3.2)在Win10环境下进行源码编译及运行指南
|
数据采集 运维 监控
物联网低代码平台 IoT Studio 的思考和技术挑战
物联网领域的低代码产品有哪些机会?该怎么做?
物联网低代码平台 IoT Studio 的思考和技术挑战
|
存储 算法
Win系统 - 为什么标注1TB的硬盘到手才900多G
Win系统 - 为什么标注1TB的硬盘到手才900多G
1550 0
Win系统 - 为什么标注1TB的硬盘到手才900多G
|
网络安全
作为一个世界级难题,DDoS攻击为什么是无解的?防御成本是硬伤
作为一个世界级难题,DDoS攻击为什么是无解的?防御成本是硬伤
|
前端开发 程序员 Linux
程序员必备神器——Typora
Typora 是一款跨平台的 Markdown 编辑器软件,支持Markdown 的标准语法,同时这款软件还支持动态预览功能,一键预览,是一款不可多得的优质Markdown 编辑器。
程序员必备神器——Typora