python socket之udp说明
UDP方式
UDP 號稱無連接傳輸,全然沒有TCP那么復雜,三次握手,錯誤重傳之類的機制都沒有,發的只管發,收得只管收,收到沒有?不知道,順序不對怎么辦?不管!就是 這樣,但是速度就要比TCP高得多了。在對數據幀要求不是很高的地方,這確實是很好用的,比如網絡上的視頻傳輸,音頻傳輸等。
server端
建立數據報形式的socket
公開一個端口,一邊客戶端連接
開始接收數據
例:udpserver.py
#!/usr/bin/python27
#_*_ encoding=utf-8 _*_
import socket
ip_port = ('0.0.0.0',9998)
sk = socket.socket(socket.AF_INET,socket.SOCK_DGRAM,0)
sk.bind(ip_port)
flag = True
while flag:
??? data,address = sk.recvfrom(1024)
??? print(data,address)
??? if data == 'exit':
??????? flag = False
??? elif data == '0':
??????? sk.sendto('0 ni mei...',address)
??? elif data.find('nihao') >= 0 :
??????? sk.sendto('hello,baby,nihao',address)
??? elif data.find('sb') >= 0 :
??????? sk.sendto('sb,to you',address)
??? else:
??????? sk.sendto('input exit to exit',address)
sk.close()
?需要注意的是,server中address元組中的引號表示可以接受任何地址來的數據報,TCP例子中的則表示可以接受任意地址發起的連接。
client端
新建一個數據報socket
收發數據
udpclient.py
#_*_ encoding=utf-8 _*_
import socket
ip_port = ('127.0.0.1',9998)
sk = socket.socket(socket.AF_INET,socket.SOCK_DGRAM,0)
while True:
??? inp = raw_input('請輸入:')
??? if inp == 'exit':
??????? break
??? sk.sendto(inp,ip_port)
??? data,address = sk.recvfrom(1024)
??? print(data,address)
?? ?
sk.close()
轉載于:https://blog.51cto.com/wushank/1665266
總結
以上是生活随笔為你收集整理的python socket之udp说明的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: RS-485 通讯
- 下一篇: 智能优化算法——蝙蝠算法(PythonM