python實現UDP通訊

2021-09-17 23:03:28 字數 2392 閱讀 1274

python可以通過socket模組進行網路中的計算機相互通訊。

socket也就是套接字,理解套接字,可以認為他就是ip位址,埠,和應用協議組成的。(自己是這麼認為的)

網際網路中的每一台主機,都是通過ip位址來標識的,通過ip位址可以訪問一台主機,想要和另外一台主機的

相關程式進行連線就需要通過port來進行標識不同的應用程序,而相關的應用協議就是傳送資料的方式。

因此,套接字也可以認為是程序間通訊的一種方式,只不過是不同主機之間的程序的通訊。

socket函式:

python語言可以通過socket模組中的socket函式進行套接字的建立,關閉等。

import socket

# 套接字

s1 = socket.socket(socket.af_inet)

# s2 = socket.socket() # wan網路internet之間的程序通訊,使用的tcp協議

print

(s1)

上述**就是如何建立乙個套接字。通過socket模組中的,socket函式建立了乙個套接字udpsocket。

af_inet表示的是使用ipv4的位址通訊,sock_dgram,表示使用的udp協議(不寫代表tcp/ip協議)。通過socket協議可以定義不同型別的socket。

sendaddr = ('192.168.56.1', 8080)
sendto函式:

這樣我們就可以通過udp協議傳送資料了

'''這是udp的客戶端'''

import socket

if __name__ ==

'__main__'

:# 1、建立udp的客戶端

'''第乙個引數表示的是位址型別,用於internet直接的程序通訊

第二個引數是傳輸協議udp'''

udp_socket = socket.socket(socket.af_inet, socket.sock_dgram)

# 定義位址

send_addr =

('10.10.24.128'

,8080

)# 2、使用套接字進行收發資料

# sendto(data[, flags], address) -> count

# 編碼windows用gbk,ubuntu用utf-8

udp_socket.sendto(

'這是傳送端omg'

.encode(

'utf-8'

), send_addr)

# 3、套接字關閉

udp_socket.close(

)

bind函式:

一般作為udp客戶端的時候,是不需要繫結埠號的,但是作為服務端就需要繫結埠號。繫結埠號,

就是把程序和埠繫結在一起,客戶端和對應的程序進行連線。

bind函式的引數是乙個元組

udpsocket.bind(("", 6789)) #繫結監聽的ip位址和埠
ip位址不填寫,表示監聽主機中的所有ip位址。

revvfrom函式:

通過recvfrom函式接受資料

udpsocket.recvfrom(1024)
其中1024表示傳送一次資料的最大的位元組數。recvfrom函式返回乙個元組。包含2個元素。

第0個元素是字串,表示傳送方傳送的內容。(可能需要解碼)

第1個元素是乙個元組,這個元組包含兩個元素,傳送方的ip和port

python實現簡單的udp聊天室

import socket

from socket import

*def

udptalk()

: udp_socket = socket(af_inet, sock_dgram)

udp_socket.bind((''

,6789))

while

true

: recvinfo = udp_socket.recvfrom(

1024

)print

("[%s]:%s"%(

str(recvinfo[1]

), recvinfo[0]

.decode(

"gb2312"))

)udptalk(

)

關於python3中的編碼與解碼

ubuntu用utf-8,windows用gbk

使用encode函式進行編碼

encode(「utf-8」)

使用decode函式程序解碼

decode("utf-8)

python實現UDP通訊

伺服器端sever usr bin python import socket address 127.0.0.1 10000 s socket.socket socket.af inet,socket.sock dgram s.bind address while 1 data,addr s.rec...

python實現UDP程式通訊

一 1 接收端 import socket 使用ipv4協議,使用udp協議傳輸資料 s socket.socket socket.af inet,socket.sock dgram 繫結埠和埠號,空字串表示本機任何可用ip位址 s.bind 5000 while true data,addr s....

Python 實現udp簡單通訊

學習 指路 server端 匯入socket import socket 設定埠號,主機號 port 12345 host 將上面倆放在位址裡 addr host,port 為該物件繫結固定位址 ip,埠號 server socket.bind addr while true recvfrom 表示...