python網路程式設計之基於udp的簡易聊天室實現

2021-09-13 04:10:48 字數 1651 閱讀 6336

為了讓兩個程式通過網路進行通訊,二者必須使用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...