為了讓兩個程式通過網路進行通訊,二者必須使用socket套接字
udp是面向訊息的協議,通訊時不需要建立連線,因此比較靈活,同時傳輸也是不可靠的。
udp通訊模型如下:
udp_client.py**如下:
import socket # 匯入socket模組
s = socket.socket(socket.af_inet, socket.sock_dgram) # 建立udp套接字
#host=socket.gethostname()
try:
while true:
send_data = input('me:\n ') # 傳送資訊
#print(send_data)
s.sendto(send_data.encode(), ('127.0.0.1', 8888))
receive_data,addr = s.recvfrom(1024) # 網路程式設計中,伺服器和瀏覽器只認bytes 型別資料。
# 如:send 函式的引數和 recv 函式的返回值都是 bytes 型別
print(" " + str(addr) + ":") # 對方標識
print(" " + receive_data.decode('utf-8')) # 接收內容
except keyboardinterrupt:
s.close()
quit()
udp_server.py**
import socket # 匯入socket模組
s = socket.socket(socket.af_inet, socket.sock_dgram) # 建立udp套接字
s.bind(('127.0.0.1', 8888)) # 繫結位址(host,port)到套接字
try:
while true:
receive_data, addr = s.recvfrom(1024) # 接收資料
print(" " + str(addr) + ":") # 收信人標識(例:qq名)
print(" " + receive_data.decode('utf-8')) # 接收內容
send_data = input('me:\n ') # 傳送內容
#print(send_data)
s.sendto(send_data.encode(), addr)
except keyboardinterrupt:
s.close()
quit()
結果如下圖所示:
網路程式設計之基於UDP的Socket程式設計
上次說的是基於tcp的協議的 socket 程式設計,tcp 協議是基於面向連線的可靠通訊協議,它具有重發機制,也即當資料被破壞或者丟失的時候,傳送方可以將該資料重發。而在資料傳輸層當中還有一種協議不具備這種重發機制 udp協議。udp協議是基於使用者資料報協議,比如說當使用者使用 udp協議傳送了...
Python網路程式設計之UDP
udp處理資料報,是一種無連線的協議 伺服器端 server socket.socket socket.af inet,socket.sock dgram 繫結ip server.bind 192.168.1.104 221 while true 接收 data,address server.rec...
Python網路程式設計之socket
socket是網路連線端點。例如當你的web瀏覽器請求ansheng.me的 時,你的web瀏覽器建立乙個socket並命令它去連線ansheng.me的web伺服器主機,web伺服器也對過來的請求在乙個socket上進行監聽。兩端使用各自的socket來傳送和接收資訊。在使用的時候,每個socke...