Python Socket编程:服务端与客户端通信完整实现指南
本文详细讲解如何使用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相关内容,可查阅本站过往文章或继续关注后续更新,感谢支持!
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













