您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關python中如何實現基于TCP協議的套接字編程,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
基于TCP協議的套接字編程
實現電話溝通為例,這里傳遞的是字符,可以自己嘗試去發送一個文件
# 服務端 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遠程執行命令(linux系統)
# 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'
關于“python中如何實現基于TCP協議的套接字編程”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。