Python9-网络编程3-day32

解决黏包的问题

#server
import socket
sk = socket.socket()
sk.bind(('127.0.0.1',8080))
sk.listen()
conn,addr = sk.accept()
while True:
    cmd = input('>>>>>>')
    if cmd == 'q':
        conn.send(b'quit')
        break
    conn.send(cmd.encode('gbk'))
    num = conn.recv(1024).decode('utf-8')
    print(num)
    conn.send(b'ok')
    res = conn.recv(int(num)).decode('gbk')
    print(res)
conn.close()

#client
import socket
import subprocess
sk = socket.socket()
sk.connect(('127.0.0.1',8080))
while True:
    cmd = sk.recv(1024).decode('gbk')
    if cmd == 'q':
        break
    res = subprocess.Popen(cmd,shell=True,stdout=subprocess.PIPE,stderr=subprocess.PIPE)
    std_out = res.stdout.read()
    std_err = res.stderr.read()
    sk.send(str(len(std_out)+len(std_err)).encode('utf-8'))
    sk.recv(1024)   #ok
    sk.send(std_out)
    sk.send(std_err)

sk.close()

猜你喜欢

转载自www.cnblogs.com/zhangtengccie/p/10360986.html
今日推荐