Python Socket编程:服务端与客户端通信完整实现指南

方予
方予
发布时间:2026-10-12 | 3人浏览过
原创

本文详细讲解如何使用Python标准库socket模块实现基本的服务端与客户端通信。内容涵盖服务端绑定端口、监听连接、接收发送数据及关闭连接的完整流程,以及客户端建立连接、发送请求和接收响应的实现方式。提供分步代码解析与完整可运行示例,帮助开发者快速掌握Python网络编程基础。

本文通过Python语言演示如何实现基础的Socket服务端与客户端通信,包含详细的步骤解析与完整代码示例,读者可根据实际需求参考使用。

(一)服务端代码实现:

首先导入内置的socket模块,并实例化一个socket对象。服务端需调用bind方法将该对象绑定至指定的IP地址与端口,参数为包含IP和端口号的元组。

import socket
#创建 socket对象
socket_server=socket.socket()
# 绑定 socket_server到指定的ip地址
socket_server.bind(("localhost",8888))

接着调用listen()方法设置监听状态,括号内的整数参数表示允许挂起的最大连接数。

#监听端口
socket_server.listen(1)

随后使用accept()方法阻塞等待客户端连接。若无连接请求,程序将在此处暂停;一旦连接建立,该方法返回一个包含连接对象和客户端地址信息的元组。

result=socket_server.accept()
conn=result[0]  #客户端连接对象
address=result[1]  #客户端地址信息

利用连接对象的recv()方法接收客户端发送的数据,参数1024指定缓冲区大小,可根据需要调整。接收到的字节数据需通过decode("UTF-8")解码为字符串。

   data = conn.recv(1024).decode("UTF-8")
   print(f"客户端发来的消息是:{data}")

使用连接对象的send()方法向客户端发送响应消息,发送前需将字符串encode为字节数据。

msg=input("请输入回复的消息:")
conn.send(msg.encode("UTF-8"))

通信完成后,分别调用close()方法关闭客户端连接对象和服务端socket对象,释放资源。

conn.close()
socket_server.close()

完整服务端代码如下:

import socket
#创建 socket对象
socket_server=socket.socket()
# 绑定 socket_server到指定的ip地址
socket_server.bind(("localhost",8888))
#监听端口, listen()内书写数字,表示可以接受链接的数量
socket_server.listen(1)
#等待客户端连接,接收到的 result是一个二元元组, accept()是一个阻塞的方法,如果没有连接不会往下执行
result=socket_server.accept()
conn=result[0]  #客户端连接对象
address=result[1]  #客户端地址信息
print(f"接收到的客户端连接信息为{address}")
while True:
   #接收客户端信息,recv接受的参数是缓冲区大小,一般1024即可,返回的是一个字节数组,bytes对象,不是字符串,再将其decode解码为字符串对象
   data = conn.recv(1024).decode("UTF-8")
   print(f"客户端发来的消息是:{data}")
   #回复消息
   msg=input("请输入回复的消息:")
   if msg=='exit':
       break
   conn.send(msg.encode("UTF-8"))
#关闭连接
conn.close()
socket_server.close()

(二)客户端代码实现:

同样导入socket模块并创建socket实例,随后调用connect()方法连接服务端的IP与端口,参数同样为包含IP和端口号的元组。

import socket
#创建 socket对象
socket_client=socket.socket()
# 让 socket对象 socket_client 连接到服务端
socket_client.connect(("localhost",8888))

连接建立后,使用send()方法向服务端发送消息,发送前需将字符串编码为字节。

msg=input("请输入你要发送的消息:")
socket_client.send(msg.encode("UTF-8"))

发送请求后,调用recv()方法等待服务端响应,需指定缓冲区大小并对接收到的字节数据进行解码。

   data=socket_client.recv(1024).decode("UTF-8")
   print(f"服务器回复的消息为:{data}")

通信结束后,调用close()方法关闭客户端socket连接。

socket_client.close()

完整客户端代码如下:

import socket
#创建 socket对象
socket_client=socket.socket()
# 让 socket对象 socket_client 连接到服务端
socket_client.connect(("localhost",8888))
while True:
   msg=input("请输入你要发送的消息:")
   if msg=='exit':
      break
   #发送消息
   socket_client.send(msg.encode("UTF-8"))
   #接收消息
   data=socket_client.recv(1024).decode("UTF-8")
   print(f"服务器回复的消息为:{data}")
socket_client.close()

至此,关于Python实现基本Socket服务端与客户端通信的介绍已完成。如需了解更多Python Socket相关内容,可查阅本站过往文章或继续关注后续更新,感谢支持!

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表