Python Web學習筆記之socket程式設計

2022-05-10 01:12:42 字數 2426 閱讀 5929

python 提供了兩個基本的 socket 模組。

第乙個是 socket,它提供了標準的 bsd sockets api。

第二個是 socketserver, 它提供了伺服器中心類,可以簡化網路伺服器的開發。

下面講的是socket模組功能:

套接字格式:

socket(family,type[,protocal]) 使用給定的位址族、套接字型別、協議編號(預設為0)來建立套接字。

注意點:

1)tcp傳送資料時,已建立好tcp連線,所以不需要指定位址。udp是面向無連線的,每次傳送要指定是發給誰。

2)服務端與客戶端不能直接傳送列表,元組,字典。需要字串化repr(data)。

tcp服務端:

1 建立套接字,繫結套接字到本地ip與埠

# socket.socket(socket.af_inet,socket.sock_stream) , s.bind()

2 開始監聽連線                   #s.listen()

3 進入迴圈,不斷接受客戶端的連線請求              #s.accept()

4 然後接收傳來的資料,並傳送給對方資料         #s.recv() , s.sendall()

5 傳輸完畢後,關閉套接字                     #s.close()

tcp客戶端:

1 建立套接字,連線遠端位址

# socket.socket(socket.af_inet,socket.sock_stream) , s.connect()

2 連線後傳送資料和接收資料          # s.sendall(), s.recv()

3 傳輸完畢後,關閉套接字          #s.close()

import socket   #

socket模組

import commands #

執行系統命令模組

host='

10.0.0.245

'port=50007s= socket.socket(socket.af_inet,socket.sock_stream) #

定義socket型別,網路通訊,tcp

s.bind((host,port)) #

套接字繫結的ip與埠

s.listen(1) #

開始tcp監聽

while 1:

conn,addr=s.accept() #

接受tcp連線,並返回新的套接字與ip位址

print

'connected by

',addr #

輸出客戶端的ip位址

while 1:

data=conn.recv(1024) #

把接收的資料例項化

cmd_status,cmd_result=commands.getstatusoutput(data) #

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

if len(cmd_result.strip()) ==0: #

如果輸出結果長度為0,則告訴客戶端完成。此用法針對於建立檔案或目錄,建立成功不會有輸出資訊

conn.sendall('

done.')

else

: conn.sendall(cmd_result)

#否則就把結果發給對端(即客戶端)

conn.close() #

關閉連線

import

socket

host='

10.0.0.245

'port=50007s=socket.socket(socket.af_inet,socket.sock_stream) #

定義socket型別,網路通訊,tcp

s.connect((host,port)) #

要連線的ip與埠

while 1:

cmd=raw_input("

please input cmd:

") #

與人互動,輸入命令

s.sendall(cmd) #

把命令傳送給對端

data=s.recv(1024) #

把接收的資料定義為變數

print data #

輸出變數

s.close() #

關閉連線

參考

python Web框架學習筆記

利用裝飾器將url和函式關聯起來 coding utf 8 class notflask def init self self.routes def route self,route str 用裝飾器函式的副產品去儲存乙個提供給我們的路徑 之間的鏈結,裝飾器函式應該與它關聯起來。notflask物件...

Python學習筆記 Python之集合set

1.什麼是set集合 set集合 無序的並且是不重複的,如下 s set a b c 2.set集合訪問 訪問set集合中的元素,使用 in 操作符判斷,如下 s set a b c print c in s print d in s結果如下 true false3.set集合遍歷 使用 for 迴...

python WEB框架Flask學習

from flask import flask def index return index if name main 方式一 方式二列如 settings.py class config debug true 連線mysql示例 database uri mysql pymysql 資料庫名 開發...