import socket
import threading
def send_msg(udp_socket):
"""獲取鍵盤數(shù)據(jù),并將其發(fā)送給對方"""
while True:
# 1. 從鍵盤輸入數(shù)據(jù)
msg = input("\n請輸入要發(fā)送的數(shù)據(jù):")
# 2. 輸入對方的ip地址
dest_ip = input("\n請輸入對方的ip地址:")
# 3. 輸入對方的port
dest_port = int(input("\n請輸入對方的port:"))
# 4. 發(fā)送數(shù)據(jù)
udp_socket.sendto(msg.encode("utf-8"), (dest_ip, dest_port))
def recv_msg(udp_socket):
"""接收數(shù)據(jù)并顯示"""
while True:
# 1. 接收數(shù)據(jù)
recv_msg = udp_socket.recvfrom(1024)
# 2. 解碼
recv_ip = recv_msg[1]
recv_msg = recv_msg[0].decode("utf-8")
# 3. 顯示接收到的數(shù)據(jù)
print(">>>%s:%s" % (str(recv_ip), recv_msg))
def main():
# 1. 創(chuàng)建套接字
udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
# 2. 綁定本地信息
udp_socket.bind(("", 7890))
# 3. 創(chuàng)建一個子線程用來接收數(shù)據(jù)
t = threading.Thread(target=recv_msg, args=(udp_socket,))
t.start()
# 4. 讓主線程用來檢測鍵盤數(shù)據(jù)并且發(fā)送
send_msg(udp_socket)
if __name__ == "__main__":
main()