學習筆記 網路基礎2

2021-09-02 23:04:20 字數 1996 閱讀 9766

c/s構架中其實客戶端用python來實現簡單的摳腳

客戶端需要進行向服務端進行傳送訊息,客戶端需要進行接收訊息,此時客戶端就模擬出了乙個服務端,所以這裡進行客戶端的演示

from socket import

*# 建立客戶端物件,並傳入引數第乙個是指的ipv4協議,第二個是指的udp協議

client = socket(af_inet, sock_dgram)

# 傳送訊息

client.sendto(

"1:525:匿名:匿名:32:內容"

.encode(

'gb2312'),

('172.16.17.16'

,8080

))

傳送訊息的裡面的字串實際上是要符合某個其他程式的標準

from socket import

*# 建立物件 第乙個是ipv4協議 第二個是udp協議

server = socket(af_inet, sock_dgram)

# 把配置告知核心不寫就是本機,第二個還是埠

server.bind(

('192.168.1.102'

,8888))

# 設定等待資料,並且接受資料量

data, address = server.recvfrom(

1024

)# 設定每次拿的多少

print

(data.decode(

'gb2312'

))

使用recevfrom進行接收的時候,1024只是限定接收的長度

bind裡面直接放位址和埠,需要注意這裡是元組

使用多執行緒處理,通過多執行緒實現伺服器功能和客戶端功能

import threading

from socket import

*def

servers()

:# 模擬伺服器

while

true

:# 服務端 獲取資料列印資料

data, address = talk.recvfrom(

1024

)# 限定每次獲取的字元長度

# 對資料進行處理

print

("\r<<{}\n>>"

.format

(data.decode(

'gb2312'))

, end='')

defclients()

:# 模擬客戶端

while

true

:# ip = ('172.16.17.16',8080) # 測試用ip

data =

input

('>>'

) talk.sendto(data.encode(

'gb2312'

),configs)

if __name__ ==

'__main__'

:# 建立兩個執行緒

t1 = threading.thread(target=servers)

t2 = threading.thread(target=clients)

# 由於要連線網路,需要先例項化物件 引數對應的是ipv4 和 udp協議

talk = socket(af_inet, sock_dgram)

# 準備好連線的位址和埠

configs =

('172.16.17.16'

,8081

)# 必須啟動執行緒

# 伺服器必須掛起

talk.bind(configs)

t1.start(

) t2.start(

)

當測試的時候由於都繫結的同乙個埠,則傳送的時候是傳送給自己

模擬兩個人進行聊天的軟體,對方既能接收也能傳送,其實對方也就相當於乙個伺服器和乙個客戶端,你傳送的位址是他模擬的伺服器位址,他傳送的位址是你伺服器的位址

網路流學習筆記(2)

最小費用最大流 在保證最大流的前提下,讓費用最小。我們有兩種思路 1.先保證流最大,再去找費用最小的。2.保證費用最小,去找最大流。通常情況下我們會選擇第二種。我們想一下最大流是怎麼做的,bfs分層圖然後dfs每次只找深度 1的去增廣。如果我們要保證最小費用呢?每次去找費用最小的增廣。我們可以spf...

Tony網路基礎學習筆記

1.iso osi iso 國際標準化組織 osi 7層模型互聯 ios 是網際網路作業系統,是思科為其網路裝置開發的操作維護系統 傳送時上層傳到下層 接收時候是下層傳到上層 bit為物理層傳輸單位 資料層以幀為單位 網絡卡的mac位址 負責內網 ip位址負責外網 傳輸層 tpdu 傳輸協議資料單元...

網路程式設計學習筆記 基礎

網路程式設計學習記錄 socket被視為檔案的一種,網路程式設計中的資料傳輸同樣使用檔案i o的相關函式。int open const char path,int flag 成功返回檔案描述符,失敗返回 1 path為檔名的字串位址 flag為檔案開啟模式,可選引數如下 例子 fd open dat...