多工版udp聊天器
阿新 • • 發佈:2022-04-18
多工版udp聊天器
1 import socket
2 import threading
3
4
5 def recv_msg(udp_socket):
6 # 3.接收資料
7 while True:
8 recv_data = udp_socket.recvfrom(1024)
9 resv_ip = recv_data[1]
10 recv_msg = recv_data[0].decode('gbk')
11 print('來自{}傳送的資料\n{}'.format(resv_ip, recv_msg))
12
13
14 def send_msg(udp_socket, dest_ip, dest_port):
15 # 4.傳送資料
16 while True:
17 send_data = input('輸入需要傳送的資料:')
18 udp_socket.sendto(send_data.encode('gbk'), (dest_ip, dest_port))
19
20
21 def main():
22 '''完成udp聊天器的整體控制'''
23 # 1.繫結套接字
24 udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
25 # 2.繫結本地資訊
26 udp_socket.bind(("", 7890))
27 # 獲取物件的ip
28 dest_ip = input('請輸入對方的ip:')
29 dest_port = int(input('請輸入對方的port:'))
30
31 # 建立執行緒
32 t_recv = threading.Thread(target=recv_msg, args=(udp_socket,))
33 t_send = threading.Thread(target=send_msg, args=(udp_socket, dest_ip, dest_port))
34
35 t_recv.start()
36 t_send.start()
37
38
39 if __name__ == '__main__':
40 main()