server.py
import socket
import os
server = socket.socket()
server.bind(('localhost',8080))
server.listen()
while True:
conn,addr = server.accept()#默認堵塞,生成conn實例
print('new connect:',addr)
while True:
cmd = conn.recv(1024)#默認堵塞,如果客戶端斷開,將收到空數(shù)據(jù)
if not cmd:
print('the client has lost!!!')
break
else:
print('the command is ',cmd.decode())
cmd_res = os.popen(cmd.decode()).read()
if not cmd_res:
cmd_res = '無效指令'
conn.send(cmd_res.encode())
server.close()
client.py
import socket
client = socket.socket()
client.connect(('localhost',8080))
while True:
data = input('>>>').strip()
if not data:
continue
client.send(data.encode())
data = client.recv(1024)
print(data.decode())
client.close()
當服務(wù)端返回數(shù)據(jù)的大小大于客戶端接受最大值,接收數(shù)據(jù)將會出現(xiàn)異常??梢酝ㄟ^客戶端循環(huán)接受代碼解決
client.py
import socket
client = socket.socket()
client.connect(('10.10.10.131',8080))
while True:
data = input('>>>').strip()
if not data:
continue
client.send(data.encode())
data = client.recv(1024)
data_size = int(data)
print('the size is ',data_size)
receive_size = b''
while len(receive_size) < data_size:
receive_size += client.recv(1024)
else:
print('received size is ',len(receive_size))
print(receive_size.decode())
client.close()
server.py
import socket
import os
server = socket.socket()
server.bind(('0.0.0.0',8080))
server.listen()
while True:
conn,addr = server.accept()#默認堵塞,生成conn實例
print('new connect:',addr)
while True:
cmd = conn.recv(1024)#默認堵塞,如果客戶端斷開,將收到空數(shù)據(jù)
if not cmd:
print('the client has lost!!!')
break
else:
print('the command is ',cmd.decode())
cmd_res = os.popen(cmd.decode()).read()
if not cmd_res:
cmd_res = '無效指令'
conn.send(str(len(cmd_res)).encode())
conn.sendall(cmd_res.encode())
server.close()