python網路編程之UDP通訊執行個體(含伺服器端、用戶端、UDP廣播例子)

來源:互聯網
上載者:User
UDP廣泛應用於需要相互傳輸資料的網路應用中,如QQ使用的就是UDP協議。在網路品質不好的情況下,使用UDP協議時丟包現象十分嚴重,但UDP佔用資源少,處理速度快,UDP依然是傳輸資料時常用的協議。

下面是用python實現UDP伺服器的代碼:

代碼如下:


#!/usr/bin/env python
import socket
address=('127.0.0.1',10000)
s=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
s.bind(address)
while 1:
data,addr=s.recvfrom(2048)
if not data:
break
print "got data from",addr
print data
s.close()

UDP用戶端的代碼:

代碼如下:


#!/usr/bin/env python
import socket
addr=('127.0.0.1',10000)
s=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
while 1:
data=raw_input()
if not data:
break
s.sendto(data,addr)
s.close()

運行這兩個程式,會顯示以下結果:

伺服器端:

用戶端:


UDP的應用

在區域網路中,如果要想區域網路內所有電腦發送資料,可以使用廣播,廣播不能用TCP實現,可以用UDP實現,接受方收到廣播資料後,如果有進程在偵聽這個連接埠,就會接收資料,如果沒有進程偵聽,資料包會被丟棄。

廣播的發送方:

代碼如下:


#!usr/bin/env python
import socket
host=''
port=10000
s=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
s.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1)
s.setsockopt(socket.SOL_SOCKET,socket.SO_BROADCAST,1)
s.bind((host,port))
while 1:
try:
data,addr=s.recvfrom(1024)
print "got data from",addr
s.sendto("broadcasting",addr)
print data
except KeyboardInterrupt:
raise

廣播的接收方:

代碼如下:


#!/usr/bin/env python
import socket,sys
addr=('',10000)
s=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
s.setsockopt(socket.SOL_SOCKET,socket.SO_BROADCAST,1)
s.sendto("hello from client",addr)
while 1:
data=s.recvfrom(1024)
if not data:
break
print data


運行廣播程式,發送端會顯示以下結果:

代碼如下:


got data from (‘<地址>',<連接埠號碼>)

hello fromclient

接收端會顯示以下結果:

代碼如下:

(‘broading',(,10000))

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.