1. 程式人生 > >python-網路程式設計-模擬聊天室

python-網路程式設計-模擬聊天室

本文作者:黎智煊,叩丁狼高階講師。原創文章,轉載請註明出處。

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

 

叩丁狼教育.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

叩丁狼教育.png

叩丁狼教育.png


udp總結

  1. udp是TCP/IP協議族中的一種協議能夠完成不同機器上的程式間的資料通訊
  2. udp伺服器、客戶端
    udp的伺服器和客戶端的區分:往往是通過請求服務和提供服務來進行區分
  • 請求服務的一方稱為:客戶端
  • 提供服務的一方稱為:伺服器
  1. udp繫結問題
  • 一般情況下,伺服器端,需要繫結埠,目的是為了讓其他的客戶端能夠正確傳送到此程序
  • 客戶端,一般不需要繫結,而是讓作業系統隨機分配,這樣就不會因為需要繫結的埠被佔用而導致程式無法執行的情況

想獲取更多技術乾貨,請前往叩丁狼官網:

http://www.wolfcode.cn/all_article.html