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