python異常及網路程式設計

2022-07-13 17:03:10 字數 2909 閱讀 2273

使用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)    #

建立伺服器套接字物件,第二個引數表示使用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協議需要請求和響應來完成通訊。

http是乙個無狀態的連線,所以引入了cookie,使得伺服器了解第二次連線的客戶端。

http協議的請求資源一般都是用url。

http請求中有各種方法,其中get,post方法使用頻率最高。get方法獲取資源,將各種引數加在url之後,post方法把請求放在請求體中,增加安全性。

http為持久連線,在伺服器響應的報文中,connection :keep-alive這個屬性使得下一次請求可以立刻連線,節約網路資源。

import

urllib.request

import

urllib.parse

deftest_get():

user_agent = '

'headers =

req = urllib.request.request('

',headers=headers)

resp =urllib.request.urlopen(req)

print

(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 來使用 異常 程式中無法按照邏輯順序執行完全部 丟擲的錯誤稱之為異常 當異常發生時,直譯器...