簡單的socket服務

2021-09-22 12:42:30 字數 1678 閱讀 2180

服務端:

#!/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監聽

while 1:

try:

conn,addr=s.accept() #接受tcp連線,並返回新的套接字與ip位址

print('connected by',addr) #輸出客戶端的ip位址

while 1:

data=conn.recv(1024) #把接收的資料例項化

cmd_status,cmd_result=subprocess.getstatusoutput(data) #subprocess.getstatusoutput執行系統命令(即shell命令),返回兩個結果,第乙個是狀態,成功則為0,第二個是執行成功或失敗的輸出資訊

if len(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:

while 1:

cmd = input("please input cmd:").encode() #與人互動,輸入命令

s.sendall(cmd) #把命令傳送給對端

data = s.recv(1024) #把接收的資料定義為變數

print(data.decode()) #輸出變數

except keyboardinterrupt:

print('\n')

s.close() #關閉連線

利用socket程式設計實現簡單的web伺服器

本博文主要利用socket 程式設計,實現簡單的web伺服器,客戶端能正常訪問這個伺服器 接收資訊,返回響應 file path self.parse request new client socket,ip port if file path file path index.html respon...

socket實驗 簡單web伺服器

開始補網路的欠賬 這個也是 計算機網路 自頂向下方法 的實驗二,後面還有多執行緒伺服器。這個伺服器程式採取的傳輸層協議是tcp,tcp和udp的區別就不贅述了,在socket程式設計上也有區別體現。區域網ip的獲取方法 終端命令 ifconfig grep inet serverport 12000...

socket 簡單實現HTTP伺服器

1 coding utf 8 2 time 2019 07 17 1 393 file 網路socket實現http伺服器.py4 software pycharm56 import socket 7importre8 910defserver conn conn,file name 11 1.響應...