Python服务端

时间:2021-09-24 17:44:13   收藏:0   阅读:41

 

本机服务端

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()  # 服务器关闭 , 此通道不会关闭

 

原文:https://www.cnblogs.com/botaoli/p/15311236.html

评论(0
© 2014 bubuko.com 版权所有 - 联系我们:wmxa8@hotmail.com
打开技术之扣,分享程序人生!