Правя връзка със сокет, но получавам грешка

Правя връзка чрез сокет и когато се опитам да се свържа с друг компютър, той връща грешката:

Traceback (most recent call last):<br>
  File "C:\Python34\Scripts\stuff\server.py", line 9, in <"module"><br>  ##without the quotations the word would not appear because of the "<>" in html code.<br>
    s.bind((HOST,PORT))<br>
OSError: [WinError 10049] The requested address is not valid in its context

Ето кода за сървъра/приемника:

import socket

s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)

HOST = "192.168.1.157"
PORT = 5454

s.bind((HOST,PORT))
s.listen(1)

while True:

    connection,client = s.accept()

    try:
        while True:
            print(bytes.decode(connection.recv(999)))
    except:
        connection.close()

И ето кода за клиента/изпращача:

import socket

HOST = input("Connect to: ")
PORT = 5454

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

s.connect((HOST,PORT))

while True:
    text = str.encode(input("Send: "))
    s.sendall(text)

Всичко работи, ако използвам „localhost“ за HOST както в сървър, така и в клиент, но идеята е, че приемникът на нечий компютър ще се свърже с моя компютър и аз трябва да въведа IP адреса на техния компютър за подателя.

Нещо ли правя погрешно или нещо, което съм пропуснал? Донякъде съм нов в това, но разгледах много уроци и за мен това трябва да работи. Всяка помощ е много ценена.


person Ruarri    schedule 06.10.2015    source източник
comment
Получавате ли грешката, когато клиентът се опитва да се свърже със слушащия сървър?   -  person iNoob    schedule 06.10.2015
comment
Не, сървърът получава грешка, когато се опитва да се свърже с клиента.   -  person Ruarri    schedule 06.10.2015
comment
Хмм, обикновено клиентът ще се свърже със слушащия сървър, изглежда, че имате проблем със свързването към адреса, който посочвате от страната на сървъра. Пускате ли сървъра и той слуша ли на дадения порт?   -  person iNoob    schedule 06.10.2015
comment
Предполага се, че слуша на дадения порт, но получава грешка, преди да направи нещо друго.   -  person Ruarri    schedule 06.10.2015
comment
Заявеният адрес не е валиден в неговия контекст е напр. повдигнати по време на bind() от API за сокет на Windows, когато адресът, който се опитвате да използвате, не е адрес на локален интерфейс. 192.168.1.157 адресът на сървъра ли е? Можете да проверите с ipconfig (може да се нуждаете от ipconfig /all).   -  person dhke    schedule 06.10.2015
comment
Да, проверете отново адреса си, очаквам да е толкова просто, колкото да нямате правилния.   -  person iNoob    schedule 06.10.2015
comment
Не се опитвам да се свържа с моя лаптоп, опитвам се да се свържа с лаптопа на баща ми. Проверих обаче, неговият IP определено е 192.168.1.157.   -  person Ruarri    schedule 06.10.2015
comment
@Ruarri Какво се случва, когато замените изричния IP с s.bind('0.0.0.0', 5454)? Това казва на сокета да слуша всички локални адреси.   -  person dhke    schedule 06.10.2015