使用udp實現簡單的網路通訊

2021-10-02 01:46:02 字數 2454 閱讀 5386

import socket      #匯入socket模組

defrecv

(udp_socket)

:# 在recvfrom這裡形成阻塞,引數為最大接收容量

# message 返回值為兩個引數的元組(返回內容,(ip,port))

message = udp_socket.recvfrom(

1024

)# 對返回元組中內容以『utf-8』的編碼方式進行解碼

print

(message[0]

.decode(

'utf-8'))

defsend

(udp_socket)

: temp =

input

('請輸入傳送內容'

)# ('',8881)為('目標位址',目標埠號)

udp_socket.sendto(temp.encode(

'utf-8'),

('',8881))

defmain()

:# 建立udp socket的套接字

# socket.af_inet -> 對應ipv4命名規則;socket.sock_dgram -> 對應使用udp套接字

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

# 定義本地ip位址以及埠號;''表示預設為本地ip位址

address =(''

,8880

)# 繫結套接字(注意bind()裡面引數的資料型別應為元組)

udp_socket.bind(address)

while

true

:print

('''

1:傳送訊息

2:接收訊息

3:退出'''

) command =

input

('請輸入操作命令:'

)if command ==

'1':

send(udp_socket)

elif command ==

'2':

recv(udp_socket)

elif command ==

'3':

break

# 關閉socket套接字

udp_socket.close(

)if __name__ ==

'__main__'

: main(

)

import socket

import threading

defrecv_msg

(udp_socket)

:"""接收資料並顯示"""

# 接收資料

while

true

:    recv_data = udp_socket.recvfrom(

1024

)print

(recv_data)

defsend_msg

(udp_socket, dest_ip, dest_port)

:"""傳送資料"""

# 傳送資料

while

true

:    send_data =

input

("輸入要傳送的資料:"

)    udp_socket.sendto(send_data.encode(

"utf-8"),

(dest_ip, dest_port)

)def

main()

:"""完成udp聊天器的整體控制"""

# 1. 建立套接字

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

# 2. 繫結本地資訊

udp_socket.bind((""

,7890))

# 3. 獲取對方的ip

dest_ip =

input

("請輸入對方的ip:"

)  dest_port =

int(

input

("請輸入對方的port:"))

# 4. 建立2個執行緒,去執行相應的功能

t_recv = threading.thread(target=recv_msg, args=

(udp_socket,))

t_send = threading.thread(target=send_msg, args=

(udp_socket, dest_ip, dest_port)

)  t_recv.start(

)  t_send.start(

)if __name__ ==

"__main__"

:  main(

)

網路通訊UDP

udp 前面已經講過tcp網路通訊,然後tcp每次通訊都要進行三次握手連線,雖然傳輸的可靠性比較高,但對於一些及時性的資料的傳輸顯得太過費時,所以就有了udp這種無連線通訊,但資料容易出錯。那些函式我這裡就不講了,直接看我上乙個部落格就行,我這裡直接附例子了。udpserver.c include ...

udp網路通訊

建立套接字 傳送 接收 資料 關閉套接字 伺服器需要通過bind固定本機ip和port import socket 1.建立udp套接字 udp socket socket.socket socket.af inet,socket.sock dgram 2.傳送資料 send socket.send...

udp網路通訊

如何使用udp實現通訊 編碼 encode 解碼 decode傳送 sendto udp傳送資訊功能 連線模組,導包 import socket 建立udp套接字 udp socket socket.socket socket.af inet,socket.sock dgram 死迴圈 while ...