龙空技术网

QQ,微信能聊天都靠它(socket)?

山羊硬件Time 548

前言:

此刻兄弟们对“socket编程用的哪个语言比较多”都比较重视,兄弟们都需要分析一些“socket编程用的哪个语言比较多”的相关文章。那么小编也在网上搜集了一些对于“socket编程用的哪个语言比较多””的相关文章,希望姐妹们能喜欢,兄弟们快快来学习一下吧!

说起网络信息交流,那肯定都知道微信,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内部的一些函数,这个下期会单独详细讲解(由于篇幅过长)。

标签: #socket编程用的哪个语言比较多