版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/chengqiuming/article/details/85011453
一 服务端程序
# 导入模块
import socket
import random
# 创建实例
sk = socket.socket()
# 定义需要绑定的ip和端口
ip_port = ("127.0.0.1", 8888)
# 绑定监听
sk.bind(ip_port)
# 最大连接数
sk.listen(5)
# 不断循环,不断接收数据
while True:
# 提示信息
print("正在进行等待接收收据......")
# 接收数据
conn, address=sk.accept()
# 定义信息
msg = "连接成功!"
# 返回信息
# python 3.x以上,网络数据的发送和接收都是byte类型
# 如果发送的数据是str类型,则需要进行编码
conn.send(msg.encode())
# 不断接收客户端发来的信息
while True:
# 接收客户端消息
data = conn.recv(1024)
# 打印数据
print(data.decode())
# 接收退出指令
if data == b'exit':
break
# 处理客户端数据
conn.send(data)
# 发送随机数
conn.send(str(random.randint(1,1000)).encode())
# 主动关闭
conn.close()
二 客户端程序
# 导入模块
import socket
# 创建实例
client =socket.socket()
#访问的服务端的ip和端口
ip_port=("127.0.0.1",8888)
# 连接主机
client.connect(ip_port)
#定义一个循环,不断发送消息
while True:
# 接收主机信息
data = client.recv(1024)
# 打印接收的数据
# 此处byte型数据特指python3.x以上
print(data.decode())
# 输入发送的消息
msg_input=input("请输入发送的消息")
# 消息发送
client.send(msg_input.encode())
if msg_input=="exit":
break
data = client.recv(1024)
print(data.decode())
三 运行结果
1 服务端
E:\Python\python_lab\venv\Scripts\python.exe E:/Python/python_lab/socketserver.py
正在进行等待接收收据......
cpu 80%
mem 70%
exit
正在进行等待接收收据......
2 客户端
E:\Python\python_lab\venv\Scripts\python.exe E:/Python/python_lab/socket_clent.py
连接成功!
请输入发送的消息cpu 80%
cpu 80%
719
请输入发送的消息mem 70%
mem 70%
773
请输入发送的消息exit
Process finished with exit code 0