在之前的一篇文章(python網路程式設計-udp)中實現了乙個簡單的udp聊天器,只能在單執行緒下進行收發資料,在學習完多執行緒之後,實現乙個能同時收發資料的udp聊天器。
說明:要求:
實現上述要求
總結多工程式的特點
示例程式:
import socket
import threading
def send_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 recv_msg(udp_socket):
"""接收訊息"""
while true:
recv_data = udp_socket.recvfrom(1024)
recv_ip = recv_data[1]
recv_msg = recv_data[0].decode("utf-8")
print("\n>>%s:%s" % (recv_ip, recv_msg))
def main():
# 建立套接字
udp_socket = socket.socket(socket.af_inet, socket.sock_dgram)
# 繫結本地埠
udp_socket.bind(("", 8888))
# 輸入對方的ip和位址
dest_ip = input("請輸入對方的ip:")
dest_port = int(input("請輸入對方的port:"))
t1 = threading.thread(target=send_msg, args=(udp_socket, dest_ip, dest_port))
t1.start()
t2 = threading.thread(target=recv_msg, args=(udp_socket,))
t2.start()
if __name__ == "__main__":
main()
終端執行結果:
$ python3 聊天器-多執行緒版.py
請輸入對方的ip:192.168.92.130
請輸入對方的port:8080
請輸入要傳送的資訊:hello
請輸入要傳送的資訊:
>>('192.168.92.130', 8080):666
網路除錯助手的結果:
程式執行過程解析:
python實現udp多執行緒聊天器
import socket import threading def recv msg udp socket 接收資料並顯示 接收資料 while true recv data udp socket.recvfrom 1024 print recv data def send msg udp soc...
tcp 多執行緒聊天器
from socket import import threading from time import sleep def main sever 建立套接字 tcp socket socket af inet,sock stream 繫結本地資訊 tcp socket.bind 8081 監聽 t...
Python筆記 多執行緒聊天
import socket import threading import sys s socket.socket socket.af inet,socket.sock stream s.bind 169.254.50.193 8080 file open chat.txt w encoding u...