1. 程式人生 > >python網絡編程,通過服務名稱和會話類型(tcp,udp)獲取端口號,簡單的異常處理

python網絡編程,通過服務名稱和會話類型(tcp,udp)獲取端口號,簡單的異常處理

one span try num python網絡 int 代碼 sys.argv 通過

作為一個php程序員,同時有對網絡方面感興趣,php就比較蛋疼了,所以就抽了些時間看python

之前學python基礎因為工作原因,斷斷續續的看了個基礎,差不多是可以寫代碼了

最近在看《python網絡編程基礎》,準備是邊實踐邊學習了,對書上的一個例子做了個復制

cli下運行的代碼

 1 #! /usr/bin/env python
 2 # -*- coding:utf-8 -*-
 3 # ^設置編碼:代碼中有中午會導致編譯錯誤
 4 
 5 # 引入socket,sys模塊
 6 import socket,sys
 7 
 8 # 接收cli傳遞的參數(服務名稱)
 9 ser_name = sys.argv[1]
10 11 print "Creating socket..." 12 # 創建socket 13 s = socket.socket(socket.AF_INET,socket.SOCK_STREAM) 14 print "dine." 15 16 print "Looking up port number..." 17 18 # 異常捕獲:cli傳遞的服務名稱可能不正確,對這個異常處理 19 try: 20 # 通過服務名稱和回話類型獲取端口號 21 port = socket.getservbyname(ser_name,tcp) 22 except socket.error as e:
23 # 異常 24 print e 25 sys.exit(1) 26 27 print "done." 28 29 print "Connect to remote host %d..." % port 30 31 # 捕獲異常:服務端可能沒有開啟對應服務,或者網絡問題導致連接失敗出現異常 32 try: 33 # 連接服務端 34 s.connect(("www.baidu.com",port)) 35 except socket.error as e: 36 # 異常 37 print "Strange error creating socket: %s
" % e 38 sys.exit(1) 39 40 print "done." 41 42 # 成功建立連接後可以得到的信息 43 # 客戶端發起連接的ip和端口 44 print "Connect from ",s.getsockname() 45 # 服務端的ip獲取端口 46 print "Connect to ",s.getpeername()

python網絡編程,通過服務名稱和會話類型(tcp,udp)獲取端口號,簡單的異常處理