? ? ? ? 什么是UDP:UDP是一個簡單的面向數(shù)據(jù)報的運(yùn)輸層協(xié)議:進(jìn)程的每個輸出操作都正好產(chǎn)生一個UDP數(shù)據(jù)報,并組裝成一份待發(fā)送的IP數(shù)據(jù)報际邻。這與面向流字符的協(xié)議不同芯丧,如TCP,應(yīng)用程序產(chǎn)生的全體數(shù)據(jù)與真正發(fā)送的單個IP數(shù)據(jù)報可能沒有什么聯(lián)系世曾。
? ? ? ? 接收端是服務(wù)器(server)缨恒,發(fā)送端是客戶機(jī)(client)。
python中網(wǎng)絡(luò)編程需要先import ?socket包:
import sys
import socket
? ? ? ?為發(fā)送目的端開一個變量,保存其IP地址及端口骗露,同時開一個變量保存自己本機(jī)IP地址岭佳,書寫形式如下:('IP地址',端口號)
address=('192.168.1.39',8085)? #set the self_address
addressto=('192.168.1.45',8085) #set the sendto_address
? ? ? ? 創(chuàng)建一個socket類的變量萧锉,然后將本機(jī)IP地址綁定到這個socket類中:
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.bind(address)
? ? ? ?只要生成了socket類的變量珊随,就可以收到來自別的客戶機(jī)發(fā)來的消息,如果需要往其他IP地址發(fā)送消息柿隙,本機(jī)只需要作為客戶機(jī)向外發(fā)送就可以了叶洞,只需要一個s變量。
data, addr = s.recvfrom(1024) 從發(fā)送方接收數(shù)據(jù)禀崖,接收到的數(shù)據(jù)data為字符串類型衩辟,保存在data中,從對方發(fā)送過來的地址保存在addr中波附。1024表示一次最多接收1024個字節(jié)惭婿。
s.sendto(message,addressto) 向目的地為addressto的地址發(fā)送message。這樣對方就能收到了叶雹,message的數(shù)據(jù)類型是字符串财饥。 ??
s.close()最后進(jìn)行關(guān)閉。