Python 複習筆記 socket

2022-08-21 23:03:10 字數 1862 閱讀 7826

udp:相當於寫信,需要ip,埠,內容 然後一起發出。不安全,甚至可能丟或者被別人收走

tpc:相當於打**,連線時需要應答,超時後會驗證,比較麻煩但是比較安全。雖然內容可能丟失,

套接字是全雙工的

udp:

流程:1.建立套接字

2.接受/傳送資料

3.關閉套接字

傳送資料

建立套接字:

概念:s = socket.socket(addressfamily(協議ipv4,ipv6),type(型別tcp,udp)) 建立的是物件

例子:s = socket.socket(socket.af_inet,socket.sock_stream/socket.sock_dgram)

傳送資料:

s.sendto(b'hello',('127.0.0.1',8080))

關閉套接字:

s.close()

接收資料

tcp:

明確區分服務端和客戶端,傳送時,好像都不需要自己繫結ip和埠

1.客戶端和udp使用類似:

1.建立套接字

tcp_client = socket.socket(socket.af_inet,socket.sock_stream)

2.連線伺服器的ip和埠

tcp_client.connect((ip,port)) 元組

3.傳送資料:

send_data = input('請輸入傳送內容:')

tcp_client.send(send_data.encode('utf-8'))

4.關閉套接字:

tcp_client.close()

2.服務端

1.在 accept 前加迴圈 為迴圈為多個客戶端服務

2.在 recv 前加迴圈,在為多個客戶服務時,迴圈為乙個客戶服務

3.如果客戶端解堵塞有兩種原因:

1.對方傳送資料 ,所以 recv 便解堵塞

2.對方呼叫了 close() 也會

4.服務端在接收到檔名時應該用try來開啟檔案,不應該用with open來開啟否則,如果檔名不存在,用with open 會出錯誤

5.客戶端要判斷服務端傳送的資料是否為空,不然會建立空文字

總的注意事項:

1. tcp伺服器一般情況下都需要繫結,否則客戶端找不到這個伺服器,更無法鏈結到伺服器

2. tcp客戶端一般不繫結,因為是主動鏈結伺服器,所以只要確定好伺服器的ip、port等資訊就好,本地客戶端可以隨機。而且可以避免開啟伺服器時發生埠問題

3. tcp伺服器中通過listen可以將socket建立出來的主動套接字變為被動的,這是做tcp伺服器時必須要做的

4.當客戶端需要鏈結伺服器時,就需要使用connect進行鏈結,udp是不需要鏈結的而是直接傳送,但是tcp必須先鏈結,只有鏈結成功才能通訊

5.當乙個tcp客戶端連線伺服器時,伺服器端會有1個新的套接字,這個套接字用來標記這個客戶端,單獨為這個客戶端服務

6. listen後的套 接字是被動套接字,用來接收新的客戶端的鏈結請求的,而accept返回的新套接字是標記這個新客戶端的

7.關閉listen後的套接字意味著被動套接字關閉了,會導致新的客戶端不能夠鏈結伺服器,但是之前已經鏈結成功的客戶端正常通訊。

8.關閉accept返回的套接字意味著這個客戶端已經服務完畢

9.當客戶端的套接字呼叫close後,伺服器端會recv解堵塞,並且返回的長度為0,因此伺服器可以通過返回資料的長度來區別客戶端是否已經下線

Python網路程式設計學習筆記一 socket模組

coding utf 8 主要測試python網路程式設計中socket模組的使用 涉及到的技術點 套接字 面向連線的還有非面向連線套接字 tcp面向連線 udp非面向連線 1 匯入socket 2 建立socket socket三要素 1 socket family,2 socket type 3...

python複習筆記(一)

一 問題獲取 今天在網上閒逛的時候,偶然看到了乙個系類教程python快速教程,點進去看看別人的心得經驗,順便鞏固一下python基礎知識,看到python標準庫01 正規表示式 re包 的時候,下邊有乙個小小的練習,順手一做並記錄下來。題目如下 練習 有乙個檔案,檔名為output 1981.10...

Python複習筆記 檔案

open filename,mode mode 唯讀 r 只寫 w 追加 a 讀寫 r 二進位制讀 rb,wb,ab,r b read 讀全部檔案 read size 讀size個位元組 readline 讀開始一行 readlines 讀所有行到乙個list write string 寫入字串,非...