#sockets #python-3.7 #python-sockets
Вопрос:
Я пытаюсь создать приложение для чата клиент/сервер сокета python, но, похоже, не могу обойти эту ошибку. Я использовал netstat -a|findstr 7000
, чтобы убедиться, что порт был доступен, и это было так. У меня нет никакого антивируса, работающего помимо безопасности Windows. Я также попробовал это сделать после отключения всех брандмауэров на моем компьютере-не перепутал настройки брандмауэра в моем маршрутизаторе. Я запускаю оба файла в командной строке Anaconda Powershell от имени администратора. Любая помощь будет признательна.
Код для server.py :
from socket import AF_INET, socket, SOCK_STREAM
import threading
BUFSIZ = 1024
FORMAT = 'utf-8'
SERVER = '192.168.1.10'
ADDR = (SERVER, 7000)
server = socket(AF_INET, SOCK_STREAM)
server.bind(ADDR)
sockets = {server}
clients = {}
def accept_incoming_connections():
while True:
client, client_addr = server.accept()
print ("%s:%s has connected." % client_addr)
client.send(bytes("Enter your name and press enter."), FORMAT)
sockets[client] = client_addr
# client_thread = threading.Thread(target=handle_client, args=(client,)).start()
def handle_client(client):
client_name = client.recv(BUFSIZ).decode(FORMAT)
client.send(bytes("Type .exit when you're ready to quit.", FORMAT))
msg = "%s has entered the chat." % client_name
broadcast(bytes(msg, FORMAT))
clients[client] = client_name
while True:
msg = client.recv(BUFSIZ)
if msg == bytes(".exit", FORMAT):
client.send(bytes(".exit", FORMAT))
client.close()
del clients[client]
broadcast(bytes("%s has left the chat." % client_name, FORMAT))
break
else:
broadcast(msg, client_name)
def broadcast(msg, name=""):
for client in clients:
client.send(bytes(name, FORMAT) msg)
if __name__ == "__main__":
server.listen()
print("Awaiting connection.")
accept_incoming_connections()
Код для client.py :
import socket
import threading
BUFSIZ = 1024
FORMAT = 'utf-8'
SERVER = '192.168.1.10'
ADDR = (SERVER, 7000)
client_sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client_sock.connect(ADDR)
def receive():
msg = client_sock.recv(BUFSIZ).decode(FORMAT)
print(msg)
def send():
msg = input('Enter msg: ')
msg.encode(FORMAT)
client_sock.send(msg)
if msg == ".exit":
client_sock.close()
receive_thread = Thread(target=receive)
receive_thread.start()
ПРАВКА: Я это исправил. Я установил СЕРВЕР на «локальный хост» и ПОРТ на 9999 как для сервера, так и для клиента.
Комментарии:
1. Я думаю, вы работаете в той же сети, не так ли?
2. @GameDev Да, в той же сети. Я собираюсь попробовать подключиться к Ethernet, когда вернусь домой.