五一假期最後一天,隨便寫寫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...