本机服务端
import socket
# 获取到socket
sk = socket.socket()
# 获取到地址 ip 和 端口号
address = ('127.0.0.1', 8001)
# 绑定 地址
sk.bind(address)
# 设置 client端的 连接、排队 人数
sk.listen(3)
print('server waiting...')
while True:
# 阻塞 等待 client连接server
conn, address = sk.accept()
print(address)
# 发送数据到client端
while True:
# 接收 client端的 数据
client_data = conn.recv(1024)
print(str(client_data, "utf8"))
if not client_data: break
inp = input('>>>')
conn.send(bytes(inp, encoding="utf-8"))
# conn.sendall(bytes('服务器关闭', encoding="utf-8"))
conn.close() # 该客户关闭
# sk.close() # 服务器关闭 , 此通道不会关闭
跨电脑服务端
import subprocess
import socket
# 获取到socket
sk = socket.socket()
# 获取到地址 ip 和 端口号
address = ('127.0.0.1', 8001)
# 绑定 地址
sk.bind(address)
# 设置 client端的 连接、排队 人数
sk.listen(3)
print('server waiting...')
while True:
# 阻塞 等待 client连接server
conn, address = sk.accept()
print(address)
# 发送数据到client端
while True:
# 接收 client端的 数据
try:
client_data = conn.recv(1024)
except Exception as e:
break
# 判断数据是够是空
if not client_data: break
print(str(client_data, "utf8"))
# 获取到结果
obj = subprocess.Popen(str(client_data, 'utf8'), shell=True, stdout=subprocess.PIPE)
# 将结果读取出来
cmd_result = obj.stdout.read()
result_len = bytes(str(len(cmd_result)), 'utf8')
conn.sendall(result_len) # 粘包问题
conn.recv(1024) # 隔断,解决粘包方法
# 发送数据到client端
conn.sendall(cmd_result)
conn.close() # 该客户关闭
# sk.close() # 服务器关闭 , 此通道不会关闭