Правя връзка чрез сокет и когато се опитам да се свържа с друг компютър, той връща грешката:
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 адреса на техния компютър за подателя.
Нещо ли правя погрешно или нещо, което съм пропуснал? Донякъде съм нов в това, но разгледах много уроци и за мен това трябва да работи. Всяка помощ е много ценена.
bind()
от API за сокет на Windows, когато адресът, който се опитвате да използвате, не е адрес на локален интерфейс.192.168.1.157
адресът на сървъра ли е? Можете да проверите сipconfig
(може да се нуждаете отipconfig /all
). - person dhke   schedule 06.10.2015s.bind('0.0.0.0', 5454)
? Това казва на сокета да слуша всички локални адреси. - person dhke   schedule 06.10.2015