怎么在python3中利用Socket实现通信

发布时间:2021-04-14 17:33:43 作者:Leah
来源:亿速云 阅读:302

这期内容当中小编将会给大家带来有关怎么在python3中利用Socket实现通信,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

服务器上socket编写步骤:

1.调用socket函数创建socket对象,如:

socket_server = socket.socket(family,type)

family参数代表地址家族,可为AF_INET(Internet通信)或AF_UNIX(同一台机器上进程间通信)。

type参数代表套接字类型,可为SOCK_STREAM(流套接字)和SOCK_DGRAM(数据报套接字)。

2.使用socket对象的bind方法,将socket绑定到指定地址,如:

socket_server.bind(address)

由AF_INET所创建的套接字,address必须是一组双元素元组,格式为(host,port)。

3.使用socket对象的listen方法接受连接请求,如:

socket_server.listen(backlog)

backlog指定最多允许多少个客户连接到服务器,至少为1,如果达到设定值,则拒绝接受新请求。

4.服务器套接字通过socket对象的accept方法等待客户请求一个连接,如:

connection,address = socket_server.accept()

运行accept方法后,socket进入“waiting”状态,等待客户请求连接。当客户请求连接时,accept方法建立连接并返回服务器,返回一组含两个元素的元组(connection,address)。 connection是新的socket对象,服务器必须通过这个新的对象与客户端进行通信 ;address是客户端的Internet地址。

5.处理阶段,服务器和客户端通过“send”和“recv”方法通信:

服务器调用send,并采用 二进制   形式向客户发送信息。send方法返回已发送的字符个数。

服务器使用recv方法从客户端接受信息,调用recv时,服务器必须指定一个整数来表示可通过本次方法调用来接受的最大数据量。recv方法在接收数据时会进入“blocked”状态,最后返回一个字符串,它表示收到的数据。如果发送数据量超过recv所允许,数据会被截断。多余的数据将缓冲到接收端。以后调用recv时,多余的数据会从缓冲区删除。

6.传输结束,调用socket对象的close方法关闭连接,如:

connection.close()

socket_server.close()

注意:这里先关闭accept创建的新socket(connection)然后关闭服务器端socket(socket_server)

客户端上socket编写步骤:

1.创建一个socket以连接服务器,如:

socket_client = socket.socket(family,type)

2.使用connect方法连接服务器,对于AF_INET而言链接格式如:

socket_client.connect((host,port))

host代表主服务器主机名或IP,port为服务器进程所绑定的端口号。

3.处理阶段,客户端和服务器端通过send与recv方法进行通信 4.传输结束,调用close方法关闭连接,如:

socket_client.close()

注意这里的socket_client是第一步创建的对象,而服务器端使用的是accept创建的新socket(connection)

关于TCP的三次握手建立连接和四次挥手断开连接这里不做叙述(彻底讲解我功夫不到家,不敢乱说),把图转来大家看一下(这个感觉很基础, 但很重要):

怎么在python3中利用Socket实现通信

三次握手

怎么在python3中利用Socket实现通信

四次挥手

程序如下:

服务器端:

怎么在python3中利用Socket实现通信

环境与服务器配置信息

怎么在python3中利用Socket实现通信

接收文件方法

怎么在python3中利用Socket实现通信

发送文件方法

怎么在python3中利用Socket实现通信

处理命令1(接收、发送)方法

怎么在python3中利用Socket实现通信

处理命令2(显示可下载文件)方法

怎么在python3中利用Socket实现通信

服务器端运行主体

客户端:

怎么在python3中利用Socket实现通信

环境与服务器配置

怎么在python3中利用Socket实现通信

接收文件方法

怎么在python3中利用Socket实现通信

发送文件方法

怎么在python3中利用Socket实现通信

确认服务器端消息方法

怎么在python3中利用Socket实现通信

处理命令1(接收、发送)方法

怎么在python3中利用Socket实现通信

处理命令2(显示可下载文件)方法

怎么在python3中利用Socket实现通信

客户端运行主体

运行说明:

1.首先建立server.py和client.py文件,并分别置于两个不同的位置,如图:

怎么在python3中利用Socket实现通信

Server文件夹及其py文件

怎么在python3中利用Socket实现通信

Client文件夹及其py文件

在Server文件夹下放一个或多个文件用于下载(我这里是4个不同类型的文件以供下文dir指令调用)

在Client文件下放一个或多个文件用于上传(我这里是一个word文本)

2.在Server目录下运行server.py,等待客户端发送连接请求:

怎么在python3中利用Socket实现通信

服务器端等待连接请求

3.在Client目录下运行client.py,向服务器端发送连接请求:

怎么在python3中利用Socket实现通信

客户端发送请求 & 服务器端连接成功

注意:先启动服务器,再启动客户端,这个为什么不用多说吧?

4.在客户端输入“dir”指令,查看可下载目录文件:

怎么在python3中利用Socket实现通信

“dir”指令

注:这里我用“\t“即制表符来控制显示格式,但不知道为啥第一个文件后会自动换行,暂且放着不去管它(不影响通信功能)

5.在客户端输入“get”指令,下载服务器中指定文件:

怎么在python3中利用Socket实现通信

“get 射频仿真.pptx“指令

怎么在python3中利用Socket实现通信

“射频仿真.pptx”下载成功

6.在客户端输入“put”指令,上传指定文件到服务器:

怎么在python3中利用Socket实现通信

“put 天线15.doc”指令

怎么在python3中利用Socket实现通信

“天线15.doc”上传成功

7.在客户端输入“close”指令,关闭连接,服务器进入监听状态:

怎么在python3中利用Socket实现通信

上述就是小编为大家分享的怎么在python3中利用Socket实现通信了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注亿速云行业资讯频道。

推荐阅读:
  1. 怎么在Python3中实现串口通信
  2. 怎么在Python中实现socket通信

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

python3 socket

上一篇:如何在Python中操作可迭代对象

下一篇:使用php怎么查询内存信息

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》