소켓 및 스레딩을 사용하여 다중 스레드 채팅 만들기

소켓 및 스레딩을 사용하여 오늘 멀티 스레드 채팅을 만드십시오.

준비된:

  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