#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 имеет защиту, которая не позволяет людям использовать сокеты. Итак, я просто перешел к терминалу, и он, наконец, работает.