소켓 및 스레딩을 사용하여 오늘 멀티 스레드 채팅을 만드십시오.
준비된:
- 가상 머신 (VMware)이 설치된 컴퓨터 1 대 (또는 컴퓨터 2 대 ( ̄︶ ̄) ↗)
- 호스트와 가상 머신 모두 Python이 설치되어 있고 둘 다 IDE가 있습니다.
내 구성 :
- win10 호스트, Ubuntu 가상 머신
- 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).