udp則是面向無連線的協議。
資料報就是這種形式。比如:簡訊。只要資料傳送出去。無需去管對方是否接收到。
使用udp協議時,不需要建立連線,只需要知道對方的ip位址和埠號,就可以直接發資料報。但是,能不能到達就不知道了。
雖然用udp傳輸資料不可靠,但它的優點是和tcp比,速度快,對於不要求可靠到達的資料,就可以使用udp協議。
我們來看看如何通過udp協議傳輸資料。和tcp類似,使用udp的通訊雙方也分為客戶端和伺服器。伺服器首先需要繫結埠:
伺服器:
# -*- coding: utf-8 -*-import socket
'''使用udp協議時,不需要建立連線,只需要知道對方的ip位址和埠號,就可以直接發資料報。但是,能不能到達就不知道了。
雖然用udp傳輸資料不可靠,但它的優點是和tcp比,速度快,對於不要求可靠到達的資料,就可以使用udp協議。
我們來看看如何通過udp協議傳輸資料。和tcp類似,使用udp的通訊雙方也分為客戶端和伺服器。伺服器首先需要繫結埠
繫結埠和tcp一樣,但是不需要呼叫listen()方法,而是直接接收來自任何客戶端的資料
'''# ipv4 sock_dgram指定了這個socket的型別是udp
s = socket.socket(socket.af_inet, socket.sock_dgram)
s.bind(('127.0.0.1', 9999))
print 'bind udp on 9999...'
while true:
# 接收資料 自動阻塞 等待客戶端請求:
data, addr = s.recvfrom(1024)
print 'received from %s:%s.' % addr
s.sendto('hello, %s!' % data, addr)
#recvfrom()方法返回資料和客戶端的位址與埠,這樣,伺服器收到資料後,直接呼叫sendto()就可以把資料用udp發給客戶端。
客戶端:
# -*- coding: utf-8 -*-import socket
'''客戶端使用udp時,首先仍然建立基於udp的socket,然後,不需要呼叫connect(),直接通過sendto()給伺服器發資料:
'''s = socket.socket(socket.af_inet, socket.sock_dgram)
for data in ['a', 'b', 'c']:
# 傳送資料:
s.sendto(data, ('127.0.0.1', 9999))
# 接收資料:
print s.recv(1024)
s.close()
Python UDP程式設計小示例
參照著廖雪峰的python教程敲的 這個示例就是很簡單的伺服器端直接接收來自客戶端的資料,然後稍作處理返回給客戶端 客戶端給伺服器端傳送資料然後將接收到的返回資料列印。udpserver.py coding utf 8 import socket sock dgram指定了這個socket的型別是u...
Python UDP程式設計小示例
參照著廖雪峰的python教程敲的 這個示例就是很簡單的伺服器端直接接收來自客戶端的資料,然後稍作處理返回給客戶端 客戶端給伺服器端傳送資料然後將接收到的返回資料列印。udpserver.py coding utf 8 import socket sock dgram指定了這個socket的型別是u...
Python udp 傳送郵件
郵箱傳送郵件 import smtplib from email.mime.text import mimetext class emailer def init self,user,password,host self.user user self.password password self.h...