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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Java Socket程式設計Java程式設計
- socket程式設計(1)程式設計
- Socket程式設計模型程式設計模型
- Python socket程式設計Python程式設計
- Socket程式設計基礎程式設計
- socket網路程式設計程式設計
- 網路程式設計-socket程式設計
- socket程式設計實戰程式設計
- 網路程式設計之socket程式設計
- 【socket程式設計基礎模板】程式設計
- python:socket網路程式設計Python程式設計
- select函式socket程式設計函式程式設計
- golang中的socket程式設計Golang程式設計
- Linux Socket C語言網路程式設計:TCP SocketLinuxC語言程式設計TCP
- Linux Socket C語言網路程式設計:UDP SocketLinuxC語言程式設計UDP
- Linux Socket C語言網路程式設計:Select SocketLinuxC語言程式設計
- PHP回顧之socket程式設計PHP程式設計
- 【python socket程式設計】—— 1.初探Python程式設計
- 學習記錄|Socket程式設計程式設計
- Python 中的 Socket 程式設計(指南)Python程式設計
- 網路程式設計-Socket通訊程式設計
- 【網路程式設計】socket詳解程式設計
- 一文看懂socket程式設計程式設計
- 玩轉 PHP 網路程式設計全套之 socket stream 程式設計PHP程式設計
- 【python socket程式設計】—— 3.響應Python程式設計
- 初試python的socket程式設計--ftpPython程式設計FTP
- 14.1 Socket 套接字程式設計入門程式設計
- Java 網路程式設計 —— Socket 詳解Java程式設計
- go socket、http網路程式設計demoGoHTTP程式設計
- 【Socket程式設計】【第一節】【Socket基本原理和套接字】程式設計
- python資源庫——socket網路程式設計Python程式設計
- socket程式設計在TCP中的應用程式設計TCP
- python網路-Socket之TCP程式設計(26)PythonTCP程式設計
- 【Linux網路程式設計】Socket Api函式Linux程式設計API函式
- socket程式設計中常見的概念問題!程式設計
- Linux Socket C語言網路程式設計:Pthread Socket [code from GitHub, for study]LinuxC語言程式設計threadGithub
- Linux Socket C語言網路程式設計:Poll Socket [code from GitHub, for study]LinuxC語言程式設計Github
- Linux Socket C語言網路程式設計:Epoll Socket [code from GitHub, for study]LinuxC語言程式設計Github