服務端:
#!/usr/bin/python3
import socket #socket模組
import subprocess #執行系統命令模組
host=
'127.0.0.1'
port=
50007
s= socket.socket(socket.af_inet,socket.sock_stream)
#定義socket型別,網路通訊,tcp
s.bind(
(host,port)
)#套接字繫結的ip與埠
s.listen(1)
#開始tcp監聽
while1:
try:
conn,addr=s.accept(
)#接受tcp連線,並返回新的套接字與ip位址
print
('connected by'
,addr)
#輸出客戶端的ip位址
while1:
data=conn.recv(
1024
)#把接收的資料例項化
cmd_status,cmd_result=subprocess.getstatusoutput(data)
#subprocess.getstatusoutput執行系統命令(即shell命令),返回兩個結果,第乙個是狀態,成功則為0,第二個是執行成功或失敗的輸出資訊
iflen
(cmd_result.strip())
==0:#如果輸出結果長度為0,則告訴客戶端完成。此用法針對於建立檔案或目錄,建立成功不會有輸出資訊
conn.sendall(
'done.'
.encode())
else
: conn.sendall(cmd_result.encode())
#否則就把結果發給對端(即客戶端)
except brokenpipeerror:
continue
except keyboardinterrupt:
break
try:
conn.close(
)#關閉連線
except nameerror:
#忽略未連線退出時造成的conn未定義錯誤
print
('\n'
)pass
客戶端:
#!/usr/bin/python3
import socket
host=
'127.0.0.1'
port=
50007
s=socket.socket(socket.af_inet,socket.sock_stream)
#定義socket型別,網路通訊,tcp
s.connect(
(host,port)
)#要連線的ip與埠
try:
while1:
cmd =
input
("please input cmd:"
).encode(
)#與人互動,輸入命令
s.sendall(cmd)
#把命令傳送給對端
data = s.recv(
1024
)#把接收的資料定義為變數
print
(data.decode())
#輸出變數
except keyboardinterrupt:
print
('\n'
) s.close(
)#關閉連線
簡單的python socket程式設計
最近寫點小東西,要用到socket伺服器和客戶端,用python實現起來非常的方便。貼點 首先 引用必要的包 import thread from socket import from time import ctime接下來定義埠號和位址 host port 8888 埠號 bufsize 200...
python socket 簡單程式設計
伺服器端 import socket s socket.socket host socket.gethostname port 1234 s.bind host,port s.listen 5 while true c,addr s.accept print got connection from ...
python socket簡單的c s示例
客戶端和服務端其實是對等的。只不過服務端是bind乙個位址,客服端是connect乙個位址。另外服務端需要呼叫listen 函式使得服務端可以接受連線請求。send,sendall,recv等等是兩邊都可以用的。下面是示例。server.py import socket s socket.socke...