我现在有种猜想,不会是Win11的防火墙把客户端当病毒拦住了吧(本来想依照微信做一个聊天系统的,但是是第一次做,不太懂)
下面是客户端
import socket
import threading
HOST = '127.0.0.1'
PORT = 55555
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server.bind((HOST, PORT))
clients = []
def handle_client(client):
while True:
try:
message = client.recv(1024).decode('utf-8')
broadcast(message)
except:
clients.remove(client)
client.close()
break
def broadcast(message):
for client in clients:
client.send(message.encode('utf-8'))
def accept_clients():
while True:
client, address = server.accept()
print(f"Connected with {str(address)}")
clients.append(client)
thread = threading.Thread(target=handle_client, args=(client,))
thread.start()
def start_server():
server.listen()
print(f"Server is listening on {HOST}:{PORT}")
accept_clients()
if __name__ == "__main__":
start_server()
这是用户端(他会启动服务器)
下面是客户端(如果ip地址相同,他会接入用户端开启的服务器)
import socket
import threading
HOST = '127.0.0.1'
PORT = 55555
client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client.connect((HOST, PORT))
def receive():
while True:
try:
message = client.recv(1024).decode('utf-8')
print(message)
except:
print("An error occurred!")
client.close()
break
def send():
while True:
message = input()
client.send(message.encode('utf-8'))
receive_thread = threading.Thread(target=receive)
receive_thread.start()
send_thread = threading.Thread(target=send)
send_thread.start()
请看运行结果
Python 3.7.8 (tags/v3.7.8:4b47a5b6ba, Jun 28 2020, 08:53:46) [MSC v.1916 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license()" for more information.
>>>
=============== RESTART: D:/人工智能启蒙/人工智能启蒙2/编程/初识无人机/无人机安全/客户链接.py ==============
Server is listening on 127.0.0.1:55555
============= RESTART: D:/人工智能启蒙/人工智能启蒙2/编程/初识无人机/无人机安全/客户连接(好友).py ============
Traceback (most recent call last):
File "D:/人工智能启蒙/人工智能启蒙2/编程/初识无人机/无人机安全/客户连接(好友).py", line 10, in <module>
client.connect((HOST, PORT))
ConnectionRefusedError: [WinError 10061] 由于目标计算机积极拒绝,无法连接。
>>>
如果你要运行的话,请先运作用户端启动服务器,然后启动客户端接入服务器(客户端可以一次性接入多个)