python 網路程式設計測試 host應答

2021-06-06 04:10:19 字數 1974 閱讀 3144

五一假期最後一天,隨便寫寫code,先上個小小伺服器應答udp請求。

由於本人只有一台機器,所以使用的是lo0埠,socket設定為so_reuseaddr

伺服器端:

#test of host

import sys , socket , traceback , time

host = ''

xport = sys.argv[1]

try:

port = int(xport)

except valueerror:

port = socket.getservbyname(xport , 'udp')

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

s.setsockopt(socket.sol_socket , socket.so_reuseaddr , 1)

s.bind((host , port))

print('waiting for a client...')

while true:

try:

message , address = s.recvfrom(1024)

if(message == 'time\n'):

print('get a client request for time...')

s.sendto('reply: ' + time.ctime() , address)

elif((message == 'hi\n') or (message == 'hello\n')):

print('get a client from:' , address)

s.sendto('reply: hi client' , address)

else:

print('get a client from: ' , address)

s.sendto('what would you need? ' , address)

except (keyboardinterrupt , systemexit):

raise

except:

traceback.print_exc()

客戶端:

#test of udp

import sys , socket

host = sys.argv[1]

xport = sys.argv[2]

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

try:

port = int(xport)

except valueerror:

port = socket.getservbyname(xport , 'udp')

try:

s.connect((host , port))

print('input the data')

data = sys.stdin.readline()

s.sendall(data)

except socket.error , e:

開啟兩個終端測試下:

客戶端輸入並得到伺服器端回應(udp):

伺服器端顯示:

ok,最後還有些要總結的

1 首先是keyboardinterrupt中斷處理,win32上的處理辦法與linux或者unix不同,需要注意

2 使用try...finally**塊關閉socket

3 關於socket選項,使用python shell查詢的小技巧(感覺有點像sql

Python網路程式設計測試 DNS

dns就是傳說中的網域名稱解析,完成網域名稱和ip之間的轉換過程,值得注意的是 反向dns是由ip到網域名稱,這需要和逆向相區別。python 2.6以下版本,3.2還沒試過,有了解的同學請指教 並沒有 原生 的提供dns相關功能的module,pydns 在sourcerage上可以直接搜尋到,或...

Python 網路程式設計測試 HTML解析

python提供了乙個htmlparser的模組,當然現在web page通常都多多少少存在html不規範的問題,比如說但是並沒有關閉 也就是說沒有 雖然xhtml可以避免這種事情的發生 mxtidy 和utidylib通常可以完成html正規化的處理工作。似乎在解析html時,正規表示式就不是那麼...

Python 網路程式設計測試 Parser初探

html或者xhtml可能是每個使用電腦的人最常接觸的程式語言,在感嘆google bing baidu等等 順便加上我老師的安圖搜尋 下面的code是測試而已,不論從 表面 或者從 內在 來說都存在一大堆問題,僅供同學們參考 code實現了從網頁資訊中獲取url的功能 class imgparse...