Python網路_UDP編程

來源:互聯網
上載者:User

標籤:小結   通過   .so   直接   學習   優點   post   連接埠   不可   

本章將介紹UDP編程,更多內容請參考:Python學習指南

TCP是建立可靠串連,並且通訊雙方都可以以流的形式發送資料。相對TCP串連,UDP則是面向不需連線的協議。

使用UDP協議時,不需要建立串連,只需要知道對方的IP地址和連接埠號碼,就可以直接發送資料包,但是,能不能到達就不知道了。

雖然用UDP傳輸資料不可靠,但它的優點是和TCP比,速度快,對於不要求可靠到達的資料,就可以使用UDP協議。

我們來看看如何通過UDP協議傳輸資料。和TCP類似,使用UDP的通訊雙方也分為用戶端和伺服器。伺服器首先需要綁定連接埠:

s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)#綁定連接埠s.bind('127.0.0.1', 9999)

建立socket時,SOCK_DGRAM指定了這個Socket的類型是UDP。綁定連接埠和TCP一樣,但是不需要調用listen()方法,而是直接接收來自任何用戶端的資料:

print('Bind UDP on 9999...')while True:    #接收資料    data, addr = s.recvfrom(1024)    print('Received from %s:%s'%addr)    s.sendto(b'Hello,%s!'%data)

recvfrom()方法返回資料和用戶端的地址和連接埠,這樣,伺服器收到資料後,直接調用sendto()就可以調用connect(),直接通過sendto()給伺服器發資料:

s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)for data in [b'chenqi', b'xiaoqi', b'miqi']:    #發送資料    s.sendto(data, ('127.0.0.1', 9999))    #接收資料    print(s.recv(1024).decode('utf-8'))s.close()

用戶端接收資料仍然調用recv()方法。

小結

UDP的使用和TCP類似,但是不需要建立串連,此外,伺服器綁定UDP連接埠和TCP連接埠互補衝突,也就是說,UDP的連接埠與TCP的9999連接埠可以各自綁定。

Python網路_UDP編程

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.