当前位置:网站首页>QQ,微信能聊天都靠它(socket)?
QQ,微信能聊天都靠它(socket)?
2022-06-12 09:18:00 【奥利给技术饭】

说起网络信息交流,那肯定都知道微信,QQ等即时通信软件,那QQ微信等聊天软件是如何实现信息传输的呢?如何实现的呢?这就不得不提本篇的主角“socket”了。

那socket到底是什么呢?它被翻译为“套接字”,是计算机进行交流通信的一种约定或者叫方式,通过socket,两个计算机就可以互相交换数据了。

如下图所示,它处于传输层与应用层之间,是一种抽象存在的东西,也正是它的存在,所以我们在调用TCP/IP, UDP时不需要明白它们的内在原理,直接调用就好了,因为socket已经为你做好了所有的适配工作。

在理解socket之前,我们先来了解网络中进程是如何进行通信的。以下以A电脑和B电脑为例。
首先A电脑和B电脑得需要自己的名字(不知道名字我怎么找到你?),在电脑中,它们有自己的唯一MAC地址,但在网络中,它们需要一个网络中的身份名字,而这个名字就是IP,有了IP之后,AB电脑都有了自己的名字,那接下来就需要建立连接,而链接就需要网络,网络又得按照特定的协议传输,所以就需要一个协议标志如TCP或UDP协议,而在OS网络模型中,传输层用“协议+端口”来唯一标示主机中的应用程序(进程),所以至此就组成了网络传输中的三个必备要素“IP地址,协议,端口”,进程通信完成。

所以在选用协议的过程中,服务端和应用端必须使用同一种协议,否则就无法正常网络通信。

那么socket原理是怎样的?
首先是服务端,创建socket(),绑定好socket与端口,然后开始监听,等待着其他客户端的连接。

然后是客户端,它同样需要创建socket(),然后去寻找指定的服务端IP地址和端口,连接到正处于监听状态的服务端。
服务端收到了客户端的连接请求,至此,服务端和客户端正式建立起网络连接,可以互相发送数据信息。

最后来看一下实例,直接socket安排(这里用的语言是python)
服务端:

客户端:

具体实现原理还需要了解socket内部的一些函数,这个下期会单独详细讲解(由于篇幅过长)。
边栏推荐
- (13) Text rendering text
- Distributed transactions - Theoretical Overview
- Sword finger offer:[day 9 dynamic planning (medium)] --- > maximum sum of continuous subarrays
- SQL basic syntax II
- 数据库常见面试题都给你准备好了
- 2022 melting welding and thermal cutting test questions and answers
- node示例后台搭建
- Chapter V -[bx] and loop instructions
- 自动化测试学习路线,快来学吧
- 2022 极术通讯-安谋科技纷争尘埃落定,本土半导体产业基石更稳
猜你喜欢
功能测试面试常见的技术问题,总结好了你不看?
What are the design principles of an automated test framework? I'll sum it up for you. Come and see

Basic exercise letter graphics
Financial test interview questions to help you get the offer
APP测试面试题汇总,面试必考一定要看

List < string > sort

Distributed task scheduling

Load the source code of 2D 3D virtual anchor in the web page (1: project introduction and source code)

软件测试面试官问这些问题的背后意义你知道吗?
软件测试需求分析方法有哪些,一起来看看吧
随机推荐
(14) Inputfield logic analysis
Bash tutorial
软件测试报告中常见的疏漏,给自己提个醒
Visualization of two-dimensional feature logistic regression prediction results
Basic exercise letter graphics
Distributed transactions - Theoretical Overview
SQL basic syntax II
Record and store user video playback history selection
Description of string
node示例后台搭建
2024. 考试的最大困扰度-滑动窗口
Solve the problem that when unity is opened, you will be prompted that the project has been opened, but you have not opened it before (it may be closed abnormally before)
128. 最長連續序列-哈希錶
Jenkins pipeline syntax
Common omissions in software test reports, give yourself a wake-up call
90%以上软件公司都会问的软件测试面试题赶紧来背吧
Subtractive integer (number theory)
測試用例和bug描述規範參考
Exists usage in SQL
Unittest test framework