1. 程式人生 > >學習筆記-網路基礎2

學習筆記-網路基礎2

DUP在python中的連線

配置客戶端

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=
'') def clients(): # 模擬客戶端 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()

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

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