一、前言
今天要和大家说的是我们常用的一些端对端的通信方式,这里我们会以python和php语言为主,举例说明客户端、浏览器端和服务器端通信,部分代码可能展示不全,不过我会放在文末链接供大家下载测试,下面我们先来让大家看看今天有哪些主题。
1、tcp
2、udp
3、ajax
4、websocket
5、sse
下面我们将从这几个方面一起来深入了解下这几种技术的实现方法。
二、TCP
1、Python版本:
首先来写服务器端,文件名为server.py,内容如下:
再来看看客户端,文件名为client.py,内容如下:
我们来看看运行结果,如下:
可以看到,接收发送信息都能实现,而且客户端下线了还有通知。
2、PHP版本
PHP想要进行TCP通信,我们得开启socket扩展,打开php目录下的php.ini文件,改动一处即可,如下:
开启后即可使用socket功能。得先首先还是服务器端代码,文件名为server.php,内容如下:
接下来是客户端,文件名为client.php,内容如下:
我们来看下结果,如下:
其实,php除了这种方式可以访问TCP连接外,还有两种方法,一种是fsockopen,还有一种是stream_socket_client,这里我们得服务器端代码不变,只对访问服务器端的客户端代码进行一些变动即可。
1).fsockopen
2).stream_socket_client
三、UDP
讲完了TCP,咱们再来说说UDP,这是一种不可靠的传输协议,但是速度快,这是它有别于TCP的地方,因此它比TCP更简单,实现一个UDP实例,代码会比前者少,下面我们一一来实现。
1、Python版本
先还是服务器端,文件名为server.py,内容如下:
其次是客户端,文件名为client.py,内容如下:
我们来看下运行结果如下:
2、PHP版本
先看服务器端的代码,文件名为server.php,内容如下:
再来看看客户端的代码,文件名为client.php,内容如下:
最后我们来看看执行结果,如下:
PHP的UDP通信和TCP一样,也有三种,上面我们介绍了一种,还有两种我们来一一介绍。
1).fsockopen
先来看看服务器端代码,文件名为server.php,内容如下:
再来看看客户端代码,文件名为client.php,内容如下:
2).stream_socket_client
这两种方法的的服务端是一样的,唯一的区别就是客户端有一点小小的区别,因此这里就不放服务端的代码了,只放客户端代码,如下:
我们来看看结果,如下:
四、AJAX
这应该算是我们比较熟悉的服务器端和浏览器端交互的方式了吧,而且为了方便一般都会使用jQuery去实现,有时候也会用原生的XMLHttpRequest,这里我们针对这两种方法一一实现。
1、Python版本
这里python版本的ajax我们使用flask实现会比较容易一些。
1).XMLHttpRequest
2).Jquery
下面来看下两者的运行结果,如下:
2、PHP版本
1).XMLHttpRequest
2).Jquery
下面来看下运行结果,如下:
五、websocket
1、Python版本
这里有两个版本,一个是原生的,利用socket模块,实现比较复杂,还有一种是利用模块,比较简单,下面我们一一介绍下。
1).原生
原生的话,会麻烦许多,主要是对服务器端的数据进行处理,如下:
下面来看下结果,如图:
2).模块
运用现有的websocket模块会比原生的简单很多,如图:
2、PHP版本
php也有原生和框架两个版本,下面我们来一一说明一下。
1).原生
2).workerman
六、SSE
1、Python版本
2、PHP版本
然后再cmd中运行PHP内置服务器,如下:
七、总结
以上就是比较常用的通信方式,其实每个编程语言基本上都可以实现,这里小编选择了两种比较熟悉的语言来进行举例,希望能帮到大家,以上所有代码如下:
Ajax
python:
https://url25.ctfile.com/f/34512525-740232809-e73a05?p=7054 (访问密码: 7054)
php:
https://url25.ctfile.com/f/34512525-740232808-2075d7?p=7054 (访问密码: 7054)
tcp
python:
https://url25.ctfile.com/f/34512525-740232796-eb04d1?p=7054 (访问密码: 7054)
php:
https://url25.ctfile.com/f/34512525-740232792-1e4408?p=7054 (访问密码: 7054)
udp
python:
https://url25.ctfile.com/f/34512525-740232786-8e234a?p=7054 (访问密码: 7054)
php:
https://url25.ctfile.com/f/34512525-740232785-57bcbc?p=7054 (访问密码: 7054)
websocket
python
原生:
https://url25.ctfile.com/f/34512525-740232779-a4aa14?p=7054 (访问密码: 7054)
模块:
https://url25.ctfile.com/f/34512525-740232778-9a8440?p=7054 (访问密码: 7054)
php
原生:
https://url25.ctfile.com/f/34512525-740232781-f7ddd4?p=7054 (访问密码: 7054)
框架:
https://url25.ctfile.com/f/34512525-740232780-ca7fce?p=7054 (访问密码: 7054)
sse
python:
https://url25.ctfile.com/f/34512525-740232774-27c899?p=7054 (访问密码: 7054)
php:
https://url25.ctfile.com/f/34512525-740232772-de8947?p=7054 (访问密码: 7054)
下一篇:C语言文件操作