UDP基礎server與client


1、基礎功能

1、server端

import socket
sk = socket.socket(type=socket.SOCK_DGRAM)  # 建立一個socket對象,
# 指定以UDP協議的形式來連接
sk.bind(('127.0.0.1',8080))
# 指定服務的地址

msg,addr = sk.recvfrom(1024) # msg為接收到的消息,addr為發送端的地址
print(msg,addr)
sk.sendto(b'HELLO',addr)   # 給發送端回復消息,需攜帶 發送端的地址

sk.close()  # 關閉socket連接

2、clien端

import socket

sk = socket.socket(type=socket.SOCK_DGRAM)

sk.sendto(b'hello',('127.0.0.1',8080))   # 直接給服務器發送一段消息,需攜帶目的地址
msg,addr = sk.recvfrom(1024)   # 接收對面的回信
print(msg)
sk.close()

 

 

 

2、udp聊天小工具

1、客戶端

 
         
import socket
ph = socket.socket(type=socket.SOCK_DGRAM)
ip_port = (("127.0.0.1",8089))

while 1:
    input_msg = input(">>>>>>:")
    ph.sendto(bytes(input_msg,encoding="utf-8"),ip_port)  #向服務端發消息,需攜帶自己的地址
    msg,adr = ph.recvfrom(1024)
    if msg.decode(encoding="utf-8") == "收到關閉命令,執行關閉連接操作":
        break
    print(msg.decode(encoding="utf-8"))

ph.close()

#注意:
input_msg = input(">>>>>>:")最好不要寫在循環外面,應該寫在循環里面緊靠發送消息時
 
         

 

2、服務端

import socket
ph = socket.socket(type=socket.SOCK_DGRAM)
ph.bind(("127.0.0.1",8089))

while 1:
    msg,adr = ph.recvfrom(1024) #接受的客戶端的消息及地址
    if msg.decode(encoding="utf-8") == "q":
        ph.sendto(bytes("收到關閉命令,執行關閉連接操作",encoding="utf-8"), adr)
        break
    # print(msg,adr)
    print(msg.decode(encoding="utf-8"))
    input_msg = input(">>>>>>:")
    ph.sendto(input_msg.encode(encoding="utf-8"),adr)#向客戶端發送消息,需攜帶客戶端的地址
ph.close()

#注意:input_msg = input(">>>>>>:")最好不要寫在循環外面,應該寫在循環里面緊靠發送消息時

總結:

#UDP server 不需要建立連接,也不需要監聽
#在啟動服務之后只能被動的接收消息
#客戶端發送消息的同時還會自帶地址信息
#回復消息的時候,不僅需要發送消息,還需要發送對方的地址


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM