網路程式設計之從UDP聊到Python的socket

2021-10-04 17:21:06 字數 1989 閱讀 8765

udpuser datagram protocol的縮寫,即使用者資料報協議。因為其無需連線的服務,所以傳輸效率高(傳送前時延較小)。udp無擁塞控制重傳機制,也就成就了它盡最大努力服務的性格。

socket(中文名:套接字),是程序間通訊的一種方式。我們只要位址(ip+port),就可以完成同乙個終端或者不同終端兩個程序之間的通訊,其中:

接下來我們借助python中的socket類,來實現兩個程序之間的通訊……

首先,我們需要實現udp服務端,檔名為udp_server.py,**如下:

import socket

# 服務端的位址(ip+port)

ip_port =

("127.0.0.1"

,9000

)# 建立乙個套接字

udp_sk = socket.socket(

type

=socket.sock_dgram)

# 將該套接字繫結伺服器的位址(ip+port)

udp_sk.bind(ip_port)

# 設定接收1024個位元組,並接收客戶端的訊息和服務端的位址(ip+port)

msg, addr = udp_sk.recvfrom(

1024

)print

(msg.decode(

"utf-8"))

# 伺服器傳送訊息給客戶端(訊息必須轉換成位元組串傳輸)

udp_sk.sendto(b"hello,i'm server,i am really glad to serve you!"

, addr)

# 關閉伺服器套接字

udp_sk.close(

)

接下來,我們需要實現udp客戶端,檔名為udp_client.py,**如下:

import socket

# 服務端的位址(ip+port)

ip_port =

("127.0.0.1"

,9000

)# 建立乙個套接字

udp_sk = socket.socket(

type

=socket.sock_dgram)

# 客戶端傳送訊息給服務端(訊息必須轉換成位元組串傳輸)

udp_sk.sendto(b"hello,i'm client!"

, ip_port)

# 設定接收1024個位元組,並接收服務端的訊息和服務端的位址(ip+port)

msg, addr = udp_sk.recvfrom(

1024

)print

(msg.decode(

"utf-8"

), addr)

實現了upd服務端和客戶端之後,我們首先要啟動服務端(即執行udp_server.py檔案),服務端在等待客戶端連線,所以控制台並無訊息輸出。

然後再執行客戶端(即執行udp_client.py檔案),控制台順出結果如下(按先後次序):

hello,i'm client!
hello,i'm server,i am really glad to serve you! ('

127.0

.0.1',

9000

)

網路程式設計之UDP協議

將資料及源和目的封裝成資料報,不需要建立連線。每個資料報的大小限制在64k內。因無連線,是不可靠的協議,但是速度快。客戶端 1 建立udp傳輸的傳送端 2 建立udp的socket服務 3 將要傳送的資料封裝到資料報中 4 通過udp的socket服務獎資料報傳送過去 5 關閉socket服務 pu...

Linux 網路程式設計之UDP

1.介紹 udp協議是無連線的,不可靠傳輸的協議.伺服器與客戶端的互動不需要建立連線,沒有流量控制的功能。與tcp一樣,它也是傳輸層協議,通訊過程中需要ip位址與埠號。使用udp進行程式設計包括伺服器與客戶端,下面介紹一下伺服器與客戶端的通訊流程 伺服器流程 1 建立伺服器套接字描socket 2 ...

linux網路程式設計之UDP

udp 前面已經講過tcp網路通訊,然後tcp每次通訊都要進行三次握手連線,雖然傳輸的可靠性比較高,但對於一些及時性的資料的傳輸顯得太過費時,所以就有了udp這種無連線通訊,但資料容易出錯。伺服器端填充 sockaddr結構 bzero addr,sizeof struct sockaddr in ...