目錄python
實現電話溝通爲例,這裏傳遞的是字符,能夠本身嘗試去發送一個文件linux
# 服務端 import socket # 1. 符合TCP協議的手機 server = socket.socket(socket.AF_INET,socket.SOCK_STREAM) # TCP # 2. 綁定手機號 一個服務器,咱們本身的電腦做爲服務器的話,用本身的IP地址 server.bind(('127.0.0.1',8000)) # 127.0.0.1 表明本地 # server.bind(('192.168.11.251',8000)) server.listen(5) # 半鏈接池 能夠同時接收5個客戶端 # 3. 等待客戶端鏈接 print('start...') # 連接循環 while True: # 通訊循環 conn,client_addr = server.accept() while True: try: # 4. 收到信息 receive data = conn.recv(1024) # 每次接收多少字節,若是改成10,客戶端輸入dir,(能夠在cmd中輸入 dir,看看會獲得什麼) ,會出現什麼狀況呢,下次的博客會講到粘包問題,以及如何處理粘包問題 print(data) # 5. 回消息 conn.send(data.upper()) except ConnectionAbortedError: continue except ConnectionResetError: break
# 客戶端1 import socket # 1. 建立符合TCP協議的手機 client = socket.socket(socket.AF_INET,socket.SOCK_STREAM) # 2. 撥號 client.connect(('127.0.0.1',8000)) while True: msg = input('please enter your msg') # dir # 3. 發送消息 client.send(msg.encode('utf8')) # 4. 接收消息 data = client.recv(1024) print(data)
# 客戶端2 import socket # 1. 建立符合TCP協議的手機 client = socket.socket(socket.AF_INET,socket.SOCK_STREAM) # 2. 撥號 client.connect(('127.0.0.1',8000)) # msg = input('please enter your msg>>>') # 3. 發送消息 client.send('hello'.encode('utf8')) client.send('world'.encode('utf8')) # 4. 接收信息 data = client.recv(1024) print(data)
# ssh服務端 import socket import subprocess server = socket.socket(socket.AF_INET,socket.SOCK_STREAM) server.bind(('192.168.11.251',8000)) # 這是個人機子,客戶端能夠是其餘人的機子 server.listen(5) print('start...') while True: conn,cient_addr = server.accept() print(client_addr) # 打印出的是其餘人機子的IP while True: try: cmd = conn.recv(1024) # dir print(cmd) # 幫你執行cmd命令,而後把執行結果保存到管道里 pipeline = subprocess.Popen(cmd.decode('utf8'), shell = True, stderr = subprocess.PIPE, # std 標準 stdout = subprocess.PIPE) stderr = pipeline.stderr.read() stdout = pipeline.stdout.read() conn.send(stderr) conn.send(stdout) except ConnectionResetError: break
# ssh客戶端 import socket # 1.建立符合TCP協議的手機 client = socket.socket(socket.AF_INET,socket.SOCK_STREAM) # 2. 撥號 client.connect(('192.168.11.210',8000)) while True: msg = input('please enter your msg') # dir # 3. 發送消息 client.send(msg.encode('utf8')) # 4. 接收消息 data = client.recv(10) print(data.decode('gbk')) # 在mac電腦上多是'utf8'
學習最有效的方法必定是有輸入,必定要輸出,這樣學的東西才能真正得有用shell