python 基于TCP協(xié)議的套接字編程詳解
更新時間:2019年06月29日 14:14:20 作者:格格小丫頭
這篇文章主要介紹了python 基于TCP協(xié)議的套接字編程,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
基于TCP協(xié)議的套接字編程
實現(xiàn)電話溝通為例,這里傳遞的是字符,可以自己嘗試去發(fā)送一個文件
# 服務端
import socket
# 1. 符合TCP協(xié)議的手機
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...')
# 鏈接循環(huán)
while True:
# 通信循環(huán)
conn,client_addr = server.accept()
while True:
try:
# 4. 收到信息 receive
data = conn.recv(1024) # 每次接收多少字節(jié),如果改為10,客戶端輸入dir,(可以在cmd中輸入 dir,看看會得到什么) ,會出現(xiàn)什么情況呢,下次的博客會講到粘包問題,以及如何處理粘包問題
print(data)
# 5. 回消息
conn.send(data.upper())
except ConnectionAbortedError:
continue
except ConnectionResetError:
break
# 客戶端1
import socket
# 1. 創(chuàng)建符合TCP協(xié)議的手機
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. 發(fā)送消息
client.send(msg.encode('utf8'))
# 4. 接收消息
data = client.recv(1024)
print(data)
# 客戶端2
import socket
# 1. 創(chuàng)建符合TCP協(xié)議的手機
client = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
# 2. 撥號
client.connect(('127.0.0.1',8000))
# msg = input('please enter your msg>>>')
# 3. 發(fā)送消息
client.send('hello'.encode('utf8'))
client.send('world'.encode('utf8'))
# 4. 接收信息
data = client.recv(1024)
print(data)
模擬ssh遠程執(zhí)行命令(linux系統(tǒng))
# 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)
# 幫你執(zhí)行cmd命令,然后把執(zhí)行結果保存到管道里
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.創(chuàng)建符合TCP協(xié)議的手機
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. 發(fā)送消息
client.send(msg.encode('utf8'))
# 4. 接收消息
data = client.recv(10)
print(data.decode('gbk')) # 在mac電腦上可能是'utf8'
學習最有效的方法一定是有輸入,一定要輸出,這樣學的東西才能真正得有用
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
您可能感興趣的文章:
- Python 網絡編程之UDP發(fā)送接收數(shù)據功能示例【基于socket套接字】
- Python socket 套接字實現(xiàn)通信詳解
- python使用原始套接字發(fā)送二層包(鏈路層幀)的方法
- Python socket套接字實現(xiàn)C/S模式遠程命令執(zhí)行功能案例
- Python網絡編程之TCP套接字簡單用法示例
- Python網絡編程之TCP與UDP協(xié)議套接字用法示例
- python利用socketserver實現(xiàn)并發(fā)套接字功能
- Python網絡編程 Python套接字編程
- 詳解python3中socket套接字的編碼問題解決
- 淺析Python中的套接字編程
相關文章
numpy的sum函數(shù)的axis和keepdim參數(shù)詳解
這篇文章主要介紹了numpy的sum函數(shù)的axis和keepdim參數(shù)詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2021-03-03
Python設置和解除Word文檔保護的實現(xiàn)步驟
在日常工作和學習中,我們經常需要使用Word文檔來記錄和分享重要的信息,為了確保文檔內容的安全性和完整性,了解如何保護和取消保護Word文檔顯得尤為重要,這篇博客將詳細介紹如何使用Python設置和解除Word文檔的保護,需要的朋友可以參考下2025-02-02
Python中Tkinter Scrollbar滾動條(窗口滑動條)
本文主要介紹了Python中Tkinter Scrollbar滾動條(窗口滑動條),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2023-03-03

