黏包现象之TCP

老师的博客:http://www.cnblogs.com/Eva-J/articles/8244551.html#_label5

server

#_*_coding:gbk*_
from socket import *
import subprocess

ip_port=('192.168.43.155',8888)
BUFSIZE=1024

tcp_socket_server=socket(AF_INET,SOCK_STREAM)
tcp_socket_server.setsockopt(SOL_SOCKET,SO_REUSEADDR,1)
tcp_socket_server.bind(ip_port)
tcp_socket_server.listen(1)

while True:
    conn,addr=tcp_socket_server.accept()
    print('客户端',addr)

    while True:
        cmd=conn.recv(BUFSIZE)
        print(cmd.decode('gbk'))
        if len(cmd) == 0:break
        res=subprocess.Popen(cmd.decode('gbk'),shell=True,bufsize=1,
                         stdout=subprocess.PIPE,  #标准输出
                         stdin=subprocess.PIPE,#标准输入
                         stderr=subprocess.PIPE) #标准错误

        stderr=res.stderr.read()
        print(stderr)
        stdout=res.stdout.read()
        print(stderr)
        conn.send(stderr)
        conn.send(stdout)
conn.close()

client

#_*_coding:gbk*_
import socket
BUFSIZE=10240
ip_port=('192.168.43.155',8888)

s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.connect_ex(ip_port)

while True:
    msg=input('>>: ').strip()
    if len(msg) == 0:continue
    if msg == 'quit':break

    s.send(msg.encode('gbk'))
    act_res=s.recv(BUFSIZE)

    print(act_res.decode('gbk'),end='')

 不知道怎么回事。clientd端运行 ipconfig/all  , python 这样的文件时收不到返回值,而随便输入的错误的代码却能够正常的返回错误的的信息

猜你喜欢

转载自www.cnblogs.com/accolade/p/10532685.html