(Python)Что мне сделать, чтобы перестать получать эту ошибку? [WinError 10013]Была предпринята попытка получить доступ к сокету способом, запрещенным его правами доступа

#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, когда вернусь домой.