Программирование сокетов Python - ConnectionRefusedError: [WinError 10061] Невозможно установить соединение, поскольку целевая машина активно отказывала в этом - PullRequest
0 голосов
/ 16 февраля 2019

Я делаю задание, касающееся программирования сокетов в python, используя клиент и сервер.Сейчас я нахожусь на Windows 10. Прежде чем углубляться в мелкие детали задания, я пытался просто соединить сервер и клиент.

Каждый раз, когда я пытаюсь запустить файл клиента, я получаю эту ошибку

File "tcpclient.py", line 9, in <module>
    s.connect((host, port))
ConnectionRefusedError: [WinError 10061] No connection could be made because the target machine actively refused it

Я открыл порты брандмауэра и все еще ничего.Я попытался заменить host на '', 0.0.0.0, socket.gethostname () в файле клиента и сервера, но ошибка все еще сохраняется.Я даже пробовал разные номера портов, но это не имело никакого значения.Я попытался запустить этот код на Ubuntu и Max, и я получаю ту же ошибку - соединение отказано.Я искал много решений, но мне все еще не удалось найти подходящее.Любая помощь будет принята с благодарностью!

Примечание: этот код был взят онлайн, но по сути он является основой того, что мне нужно сделать.tcpclient.py

import socket

host = '127.0.0.1'
port = 80
buffer_size = 1024
text = "Hello, World!"

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((host, port))
s.send(text)
data = s.recv(buffer_size)
s.close()

print("received data:", data)

tcpserver.py

import socket

host = '127.0.0.1'
port = 80
buffer_size = 20  

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((host, port))
s.listen(1)

conn, addr = s.accept()
print 'Connection address:', addr
while 1:
    data = conn.recv(buffer_size)
if not data: break
print("received data:", data)
conn.send(data)  # echo
conn.close()

1 Ответ

0 голосов
/ 20 февраля 2019

Для client.py

import socket
host = '127.0.0.1'
port = 9879
buffer_size = 1024
text = "Hello, World!"
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((host, port))
text = text.encode('utf-8')
s.send(text)
data = s.recv(buffer_size)
s.close()
print("received data:", data)

Для server.py

import socket
mysocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
buffer_size = 1024
text = "Hello, World!"
mysocket.bind(('127.0.0.1', 9879))
mysocket.listen(5)
(client, (ip,port)) = mysocket.accept()
print(client, port)
client.send(b"knock knock knock, I'm the server")
data = client.recv(buffer_size)
print(data.decode())
mysocket.close()

Просто измените номер порта, и он будет работать, и если вы находитесь в python3, вам придется кодироватьи декодировать, когда сокет получает и отправляет только двоичные строки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...