Python实现基本Socket服务端与客户端通信

该文详细介绍了如何使用Python的socket模块创建服务端和客户端,进行基本的网络通信。服务端包括创建socket、绑定IP和端口、监听、接收和发送数据,客户端涉及建立连接、发送和接收消息。代码示例包含了完整的交互流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

      该文章使用 python 实现基本的 socket 服务端与客户端通信,分步详解与完整代码都有,按需所求即可。

(一)服务端代码:

1. 引入自带的socket模块,并创建一个socket实例,服务端需要使用 bind 将该实例绑定到指定域名与端口下,域名与端口号放在元组中传入

import socket

#创建 socket对象
socket_server=socket.socket()

# 绑定 socket_server到指定的ip地址
socket_server.bind(("localhost",8888))

2. 设置端口监听,listen() 内书写数字,表示可以接受链接的数量

#监听端口
socket_server.listen(1)

3. 使用 accept 方法 等待客户端连接,该方法是个阻塞方法,没有链接则会一直阻塞在此步。连接成功会返回一个元组,元组内分别为 连接对象客户端地址信息

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

4. 使用连接对象的 recv 方法 接收客户端发来的消息,1024表缓冲区大小,可自行设置,并解码为UTF-8 格式

   data = conn.recv(1024).decode("UTF-8")

   print(f"客户端发来的消息是:{data}")

5. 使用连接对象的 send 方法 给客户端发送消息

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

6. 通信结束后分别断开链接

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()

(一)客户端代码:

1. 引入自带的socket模块,并创建一个socket实例,然后链接服务端的域名与端口,也是元组作为参数传入

import socket

#创建 socket对象
socket_client=socket.socket()

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

2. 然后就可以使用 send 给服务端发送消息

msg=input("请输入你要发送的消息:")

socket_client.send(msg.encode("UTF-8"))

3. 发送后使用 recv 等待接收服务端回复的消息,同样需要设置缓冲区与解码

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

4. 通信结束后断掉链接

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()

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

卡卡西最近怎么样

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值