服務端 ...
服務端
import socket,os
service=socket.socket()
service.bind(('localhost',1024)) #綁定要監聽的埠
service.listen()###監聽埠
con,adder=service.accept()#等對方的連接,把對方的連接在本地生成一個實例並賦值個給con
while True:
data=con.recv(1024).decode('utf-8')##接收對方傳過來的值(接收的最大值為2222個位元組)並且賦值
x=os.popen(data).read()
con.send(str(len(x)).encode('utf-8'))
#time.sleep(0.5) ###防止粘包,但是會有延遲(不推薦)
check_ack=con.recv(1024)##兩次send之間在進行一次交互來防止粘包(推薦),同時在客戶端也進行回應
con.send(x.encode('utf-8'))#向對方發送數據
service.close()
客服端
import socket
client=socket.socket()
client.connect(('localhost',1024))
while True:
msg=input(':').encode('utf-8')
client.send(msg)
datasize=client.recv(1024).decode('utf-8')
client.send("我收到了,可以傳下麵的內容了".encode())###客戶端進行一次自動的確認
x=0
while x != int(datasize):
a=client.recv(1012).decode('utf-8')
x+=len(a)
print(a)
else:
print(datasize,x)