怎么在python3中利用套接字实现通信

  介绍

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

<强>服务器上的套接字编写步骤:

<强> 1。调用插座函数创建插座对象,如:

socket_server =, socket.socket(家庭、类型)

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

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

<强> 2。使用套接字对象的结合方法,将套接字绑定到指定地址,如:

socket_server.bind(地址)

由AF_INET所创建的套接字、地址必须是一组双元素元组,格式为(主机、端口)。

<强> 3。使用套接字对象的听方法接受连接请求,如:

socket_server.listen(积压)

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

<强> 4。服务器套接字通过插座对象的接收方法等待客户请求一个连接,如:

连接,address =socket_server。accept ()

运行接受方法后,插座进入“等待”状态,等待客户请求连接。当客户请求连接时,接收方法建立连接并返回服务器,返回一组含两个元素的元组(连接,地址)。<强>连接是新的套接字对象,服务器必须通过这个新的对象与客户端进行通信强;地址是客户端的互联网地址。

<强> 5。处理阶段,服务器和客户端通过“发送”和“recv”方法通信:

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

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

<强> 6。传输结束,调用套接字对象的近方法关闭连接,如:

connection.close ()      socket_server.close ()

注意:这里先关闭接受创建的新套接字(连接),然后关闭服务器端套接字(socket_server)

<强>客户端上的套接字编写步骤:

<强> 1。创建一个套接字以连接服务器,如:

socket_client =, socket.socket(家庭、类型)

<强> 2。使用连接方法连接服务器,对于AF_INET而言链接格式如:

socket_client.connect((主机、端口))

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

<强> 3。处理阶段,客户端和服务器端通过发送与recv方法进行通信4。传输结束,调用近方法关闭连接,如:

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中利用套接字实现通信