Ошибка ConnectionRefusedError: [Ошибка 61] Отказано в подключении к Python3.8.5 на Mac

#python #sockets #server #port #host

#python #сокеты #сервер #порт #хост

Вопрос:

Я пытаюсь подключиться к 2 маленьким программам pythons при использовании сокета. 1-я программа:

 #server.py

import socket

server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
host = '127.0.0.1' #L'IP du Serveur
port = 1234 #data transfering port

server.bind((host,port)) #bind server
server.listen(5)

client, addr = server.accept()
print("Got Connection from",addr)

client.send("Hello World :)".encode('UTF-8')) #send data to client
msg = client.recv(1024)
print(msg.decode('UTF-8'))
input()
  

2-я программа:

 #client.py

import socket

server = socket.socket()
host = '127.0.0.1' #L'IP du Serveur
port = 1234
server.connect((host,port))

msg =server.recv(1024)
print(msg.decode('UTF-8'))

server.send('Client Online ...'.encode('UTF-8'))
input()
  

Я сначала запускаю server.py , никаких проблем. Затем я запускаю client.py но когда я запускаю его, у меня есть:
«

 Traceback (most recent call last):
  File "/Users/user/Documents/client.py", line 8, in <module>
    server.connect((host,port))
ConnectionRefusedError: [Errno 61] Connection refused
>>> 
  

«

Я пробовал несколько вещей, таких как деактивация моей стены, ввод моего 192.168.1.x IP, но все равно получаю то же сообщение об ошибке. Я также отправляю это одному из моих друзей, который находится на ПК (я на MAC), и у него нет проблем. Итак, я предполагаю, что проблема связана с тем, что у меня mac. У кого-нибудь есть ответ или объяснение?

Комментарии:

1. Ваш код в порядке, я пробовал его и на Ubuntu. Можете ли вы попробовать заменить ‘127.0.0.1’ на ‘0.0.0.0’ (на server.py )?

2. Я только что попробовал это на mac, и клиент запускается, печатает «Hello World :)» в терминале и завершает работу, когда я нажимаю [enter]. Сервер печатает «Получено соединение от (‘127.0.0.1’, 59067)» и «Клиент онлайн …», когда клиенты подключаются и завершают работу, когда я нажимаю [enter]. Кажется, все работает так, как ожидалось…

3. Да! Большое вам спасибо за вашу поддержку! Проблема была в режиме ОЖИДАНИЯ.

Ответ №1:

Я кодировал с IDLE. Это была проблема. Я предполагаю, что IDLE имеет защиту, которая не позволяет людям использовать сокеты. Итак, я просто перешел к терминалу, и он, наконец, работает.