ソケットとスレッドを使用して、今日マルチスレッドチャットを作成します
準備完了:
- 仮想マシン(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)。