SOCKET程式設計
加上迴圈的套接字通訊
服務端應該滿足的特性:
一直對外服務
併發地提供服務
import socket
phone = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 在bind之前新增
phone.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1) # 重用ip和埠
phone.bind('127.0.0.1', 8080)
phone.listen(5)
print(f'starting %s:%s'%('127.0.0.1', 8080))
# 連結迴圈
while True:
conn, client_addr = phone.accept()
print(client_addr)
# 通訊迴圈
while True:
try:
data = conn.recv(1024)
# 針對linux系統
if len(data) == 0:
break
print('收到客戶端資料:', data.decode('utd-8'))
conn.send(data.upper())
# 針對Windows系統
except Exception:
break
conn.close()
phone.close() # 關機
客戶端:
import socket
phone = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
phone.connect(('127.0.0.1', 8080))
while True:
msg = input('>>>:').strip()
phone.send(msg.encode('utd-8'))
data = phone.recv(1024)
print('服務端返回的資料:', data.decode('utd-8'))
phone.close()
5.3 遠端連線服務端並執行指令
服務端:
import socket
import subprocess
phone = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
phone.setsocketopt(socket.SOL_SOCKET, socket.SO_REUSEADDR,1)
phone.bind(('127.0.0.1', 8080))
phone.listen(5)
print('starting %s:%s'%('127.0.0.1', 8080))
while True:
conn, client_addr = phone.accept()
print(client_addr)
while True:
try:
cmd = coon.recv(1024)
if len(cmd) == 0:
break
obj = subprocess.Popen(cmd.decode('utf-8'),
shell = True,
stdout = subprocess.PIPE,
stderr = subprocess.PIPE)
res1 = obj.stdout.read()
res2 = obj.stderr.read()
conn.send(res1 if len(res2) == 0 else res2)
except Exception:
break
conn.close()
phone.close()
客戶端:
phone = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
phone.connect(('127.0.0.1', 8080))
while True:
cmd = input('[root@localhost]# ').strip()
phone.send(cmd.encode('utf-8'))
data = phone.recv(1024)
print(data.decode('gbk))
phone.close()
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69979119/viewspace-2711738/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- socket程式設計(1)程式設計
- Java Socket程式設計Java程式設計
- Java Socket程式設計Java程式設計
- WCF、Socket程式設計程式設計
- Socket程式設計(九)程式設計
- Socket程式設計模型程式設計模型
- Python socket程式設計Python程式設計
- Socket程式設計基礎程式設計
- socket程式設計實戰程式設計
- Socket網路程式設計程式設計
- Socket 程式設計實戰程式設計
- IO和socket程式設計程式設計
- Java Socket 程式設計指南Java程式設計
- linux Socket 程式設計Linux程式設計
- 網路程式設計-socket程式設計
- 【socket程式設計基礎模板】程式設計
- golang中的socket程式設計Golang程式設計
- 網路程式設計之socket程式設計
- Socket 程式設計 (網路篇)程式設計
- Socket 程式設計IO Multiplexing程式設計
- PHP Socket 程式設計詳解PHP程式設計
- 【Python】socket 程式設計初探Python程式設計
- PHP回顧之socket程式設計PHP程式設計
- select函式socket程式設計函式程式設計
- python:socket網路程式設計Python程式設計
- 學習記錄|Socket程式設計程式設計
- 一文看懂socket程式設計程式設計
- Linux Socket 程式設計簡介Linux程式設計
- Python Socket 網路程式設計Python程式設計
- 【網路程式設計】socket詳解程式設計
- Java Socket 程式設計原理及教程Java程式設計
- Qt 中Socket程式設計例項QT程式設計
- socket程式設計的select模型程式設計模型
- android socket程式設計例項Android程式設計
- Python網路Socket程式設計Python程式設計
- java的socket程式設計問題Java程式設計
- Socket原理與程式設計基礎程式設計
- linux socket程式設計初步(2)Linux程式設計