使用if作為錯誤處理機制時,無法窮舉所有的異常情況,而且在處理異常時處理**和業務**混合在一起,嚴重影響程式的可讀性。
使用raise語句自動引發異常。如果raise語句在try中,則會丟擲runtimeerror異常。如果raise在exception語句中,則會將exception中的異常丟擲。
網路程式設計,不管是使用tcp還是udp,都有socket程式包。
server = socket.socket(socket.af_inet,socket.sock_stewam) #建立伺服器套接字物件,第二個引數表示使用tcp
server.bind(('
127.0.0.1
',8000)) #
建立的套接字物件繫結伺服器主機和埠
server.listen() #
由於tcp是基於連線的協議,所以需要使用監聽
sock, addr = server.accept() #
伺服器接受來自客戶端的連線
data = sock.recv(1024) #
伺服器接受到客戶端傳送的訊息
sock.send('
hello client
'.encode()) #
伺服器向客戶端傳送訊息
server.close() #
伺服器關閉連線
sock.close() #
連線物件關閉
client = socket.socket(socket.af_inet,socket.sock_stream) #
建立客戶端套接字物件
client.connect(('
127.0.0.1
',8000)) #
建立的套接字物件連線到伺服器上
client.send('
hello server
'.encode()) #
客戶端向伺服器傳送資訊
client.recv(1024) #
客戶端收到伺服器傳送的訊息
client.close() #
通訊結束後,關閉客戶端的連線
server = socket.socket(socket.af_inet,socket.sock_dgram) #http協議在應用層中使用。具有以下特點。建立伺服器套接字物件,第二個引數表示使用udp協議
server.bind(('
127.0.0.1
',8000)) #
建立的伺服器套接字物件繫結相應的位址和埠
data,addr=server.recvfrom(1024) #
由於傳輸層使用udp協議,所以不需要監聽,只是在接收資訊時收到客戶端的位址和資訊
server.sendto('
hello client
'.encode(),addr) #
根據收到的客戶端位址,再傳送資訊
server.close() #
通訊結束,關閉伺服器物件
client = socket.socket(socket.af_inet,socket.sock_dgram) #
建立客戶端套接字物件
client.sendto('
hello server
'.encode(),('
127.0.0.1
',8000)) #
客戶端不需要連線到伺服器,只需在傳送資訊時指定相應的伺服器位址即可
client.recv(1024) #
客戶端收到伺服器的資訊
client.close() #
通訊結束關閉客戶端連線
http協議需要請求和響應來完成通訊。
http是乙個無狀態的連線,所以引入了cookie,使得伺服器了解第二次連線的客戶端。
http協議的請求資源一般都是用url。
http請求中有各種方法,其中get,post方法使用頻率最高。get方法獲取資源,將各種引數加在url之後,post方法把請求放在請求體中,增加安全性。
http為持久連線,在伺服器響應的報文中,connection :keep-alive這個屬性使得下一次請求可以立刻連線,節約網路資源。
importurllib.request
import
urllib.parse
deftest_get():
user_agent = '
'headers =
req = urllib.request.request('
',headers=headers)
resp =urllib.request.urlopen(req)
(resp.read().decode())
deftest_post():
user_agent = '
'headers =
data =
data =urllib.parse.urlencode(data).encode()
req = urllib.request.request('
login/userlogin
',headers=headers,data=data)
resp =urllib.request.urlopen(req)
print(resp.read().decode())
網路程式設計的異常及處理
網路程式設計不只是編寫網路 主機 程序都正常時能良好工作的程序,更重要的是客戶主機崩潰 客戶程序崩潰網路異常時怎麼處理。accept被訊號中斷 accept以及套接字上的i o可能被訊號打斷,並返回eintr作為結果,必須處理該返回值並且適當時候再次呼叫。for else connect被訊號中斷 ...
python網路提示 python異常及網路程式設計
為什麼需要使用異常?使用if作為錯誤處理機制時,無法窮舉所有的異常情況,而且在處理異常時處理 和業務 混合在一起,嚴重影響程式的可讀性。使用raise語句自動引發異常。如果raise語句在try中,則會丟擲runtimeerror異常。如果raise在exception語句中,則會將exceptio...
異常與網路程式設計
new 和init的區別 new 比 init 先執行,其作用是建立乙個空的類物件 作為乙個類物件 必須具有三個組成部分 所以呼叫type中的 new 來完成組裝 得到這個類物件後需要將其返回,以供 init 來使用 異常 程式中無法按照邏輯順序執行完全部 丟擲的錯誤稱之為異常 當異常發生時,直譯器...