ソケットとスレッドを使用して、マルチスレッドチャットを作成します

ソケットとスレッドを使用して、今日マルチスレッドチャットを作成します

準備完了:

  1. 仮想マシン(VMware)がインストールされた1台のコンピューター(または2台のコンピューター( ̄︶ ̄)↗)
  2. ホストと仮想マシンの両方にPythonがインストールされており、両方にIDEがあります

私の構成:

  1. win10ホスト、Ubuntu仮想マシン
  2. IDEはpycharmです

チャットツールを作成する前に、ホストと仮想マシンのIPを知る必要があり
ます。Ubuntuの場合は、右クリックしてターミナルを開き、コマンドを入力してIPを表示します。

ifconfig

winの場合、win + cmdでターミナルを開き、コマンドを入力してIPを表示します

ipconfig

私の勝利ホストIPと仮想マシンIPはそれぞれです

192.168.1.2 # win
192.168.48.142 # Ubuntu

窓に

import socket
import threading

def recv(udp_socket):
    while True:
        msg=udp_socket.recv(1024)
        print(msg.decode('utf-8'))
        
def send(udp_socket,addr):
    while True:
        msg=input("输入:")
        udp_socket.sendto(msg.encode('utf-8'),addr)
        
def main():
    
    # 1. 创建套接字
    udp_socket=socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    
    # 2. 绑定ip和port
    udp_socket.bind(('192.168.1.2',7892))
    
    # 3.对方的ip和port
    addr=('192.168.48.142',7893)
    
    # 4. 创建线程
    
    t_send=threading.Thread(target=send,args=(udp_socket,addr))
    t_recv=threading.Thread(target=recv,args=(udp_socket,))
    
    t_send.start()
    t_recv.start()
    
    
    
if __name__=='__main__':
    main()

仮想マシン上

import socket
import threading

def recv(udp_socket):
    while True:
        msg=udp_socket.recv(1024)
        print(msg.decode('utf-8'))
        
def send(udp_socket,addr):
    while True:
        msg=input("输入:")
        udp_socket.sendto(msg.encode('utf-8'),addr)
        
def main():
    
    # 1. 创建套接字
    udp_socket=socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    
    # 2. 绑定ip和port
    udp_socket.bind(('192.168.48.142',7893))
    
    # 3.对方的ip和port
    addr=('192.168.1.2',7892)
    
    # 4. 创建线程
    
    t_send=threading.Thread(target=send,args=(udp_socket,addr))
    t_recv=threading.Thread(target=recv,args=(udp_socket,))
    
    t_send.start()
    t_recv.start()
    
    
    
if __name__=='__main__':
    main()

もちろん、ポートが異なる限り、同じコンピューターが相互に通信することもできます(同じIP)。

おすすめ

転載: blog.csdn.net/qq_41459262/article/details/106964019
おすすめ