《Python網路基礎》學習筆記(二) 網路客戶端

2021-06-23 00:09:37 字數 2183 閱讀 2307

python通過socket模組提供了訪問作業系統socket庫的介面,建立socket的時候,只需要呼叫這個模組裡的函式和常量。

建立socket

對於乙個客戶端程式,建立乙個socket需要經過兩個步驟:1.建立乙個實際的socket物件。2.將它連線到遠端伺服器上。

在建立socket物件的時候,需要告訴作業系統使用的通訊型別和協議家族。

對於tcp通訊,**如下;

s = socket.socket(socket.af_inet,socket.sock_stream)

對於udp通訊,**則為:

為了尋找到合適的埠號,socket模組中包含了乙個getservbyname()的函式,它可以自動查詢埠號。這個函式接受兩個引數:協議名和埠名。埠名是乙個字串

這樣我們上面的**就可以寫成

從socket獲取資訊:

getsockname()函式用於獲取本機的ip位址和埠號,getpeername()用於獲得遠端機器的ip位址和埠號

處理異常

socket模組中定義了四種可能出現的異常

1.與一般i/o和通訊問題有關的socket.error

2.與查詢位址資訊有關的socket.gaierror

3.與其他位址錯誤有關的socket.herror

4.與在乙個socket上呼叫settimeout()後,處理超時有關的socket.timeout()

# -*- coding: cp936 -*-

##modify by 小五義

import socket,sys

port =70

host=sys.argv[1]

filename=sys.argv[2]

try:

s=socket.socket(socket.af_inet,socket.sock_stream)

except socket.error,e:

print "建立socket錯誤:%s"%e

try:

s.connect((host,port))

except socket.gaierror,e:

print "host或者埠錯誤:%s" %e

except socket.error,e:

print "連線錯誤:%s" %e

try:

s.sendall(filename+"\r\n")

except socket.error,e:

print "資料傳送錯誤:%s" %e

sys.exit(1)

while 1:

try:

buf=s.recv(2048)

except socket.error,e:

print "接收錯誤:%s"%e

sys.exit(1)

if 'does not exist' in buf:

print "%s檔案不存在" %filename

else:

if not len(buf):

break

sys.stdout.write(buf)

Python基礎學習筆記(二)

時間裝飾器,日誌裝飾器 def log func def logger warpper args,kwargs print func.name is running result func args,kwargs print func.name is finish return result ret...

python基礎學習筆記二

二 資料型別 3 bool 布林 4 list 列表 5 tuple 元組 6 dict 字典 7 set 集合 包含 英文本母 數字 特殊字元 大小 8bit 1byte 包含 中文 是國標碼 大小 16bit 2byte 包含 萬國碼 大小 32bit 4byte 包含 英文 歐洲文字 中文 英...

python學習筆記(二) python基礎函式

python之所以強大好用,離不開可以呼叫的各種庫,同時也和他自身函式相關,下面為學習python函式相關知識後整理知識點。1 python函式引數 python函式定義簡單但靈活度非常大。除正常定義的必選引數外,還可以使用預設引數,可變引數,關鍵字引數。預設引數 def power 5 x 2 在...