python-網路程式設計-模擬聊天室
阿新 • • 發佈:2018-12-11
本文作者:黎智煊,叩丁狼高階講師。原創文章,轉載請註明出處。
udp應用:echo伺服器
- 模擬的是設定一個伺服器,一旦有客戶端傳送資料到服務端,服務端馬上響應訊息給客戶端,類似機器人自動回覆.
參考程式碼
#coding=utf-8 from socket import * #1. 建立套接字 udpSocket = socket(AF_INET, SOCK_DGRAM) #2. 繫結本地的相關資訊 bindAddr = ('', 7788) # ip地址和埠號,ip一般不用寫,表示本機的任何一個ip udpSocket.bind(bindAddr) num = 1 while True: #3. 等待接收對方傳送的資料 recvData = udpSocket.recvfrom(1024) # 1024表示本次接收的最大位元組數 #4. 將接收到的資料再發送給對方 udpSocket.sendto(recvData[0], recvData[1]) #5. 統計資訊 print('已經將接收到的第%d個數據返回給對方,內容為:%s'%(num,recvData[0])) num+=1 #5. 關閉套接字 udpSocket.close()
演示過程
叩丁狼教育.png
叩丁狼教育.png
udp應用:聊天室
- 這裡模擬就是需要雙方手動回覆的聊天模式了.
參考程式碼:
#coding=utf-8 from socket import * from time import ctime #1. 建立套接字 udpSocket = socket(AF_INET, SOCK_DGRAM) #2. 繫結本地的相關資訊 bindAddr = ('', 7788) # ip地址和埠號,ip一般不用寫,表示本機的任何一個ip udpSocket.bind(bindAddr) while True: #3. 等待接收對方傳送的資料 recvData = udpSocket.recvfrom(1024) # 1024表示本次接收的最大位元組數 #4. 列印資訊 print('【%s】%s:%s'%(ctime(),recvData[1][0],recvData[0])) #5. 關閉套接字 udpSocket.close()
叩丁狼教育.png
叩丁狼教育.png
udp總結
- udp是TCP/IP協議族中的一種協議能夠完成不同機器上的程式間的資料通訊
- udp伺服器、客戶端
udp的伺服器和客戶端的區分:往往是通過請求服務和提供服務來進行區分
- 請求服務的一方稱為:客戶端
- 提供服務的一方稱為:伺服器
- udp繫結問題
- 一般情況下,伺服器端,需要繫結埠,目的是為了讓其他的客戶端能夠正確傳送到此程序
- 客戶端,一般不需要繫結,而是讓作業系統隨機分配,這樣就不會因為需要繫結的埠被佔用而導致程式無法執行的情況
想獲取更多技術乾貨,請前往叩丁狼官網:
http://www.wolfcode.cn/all_article.html