
[英]nslookup an ip address. some issues!!! and python script required
[英]Cannot connect to socket on '' ip address. Python
他,我有一个服务器 python 脚本,它侦听 ip 地址''
和端口 1337,现在我正在尝试在客户端连接到该套接字。 但出于某种原因,我不能那样做。 如果我将绑定地址更改为"127.0.0.1"
,它会工作得很好,但我被告知要使用此 ip 地址''
。
有人可以解释一下为什么这是 heppening 以及这个 ip 地址是什么意思吗?
这是我的服务器:
import socket
from threading import Thread
HOST = ''
PORT = 1337
def main():
try:
s.bind((HOST, PORT))
except socket.error as msg:
print('Bind failed. Error Code : ' + str(msg[0]) + ' Message ' + msg[1])
sys.exit()
print('Socket bind complete')
s.listen(10)
print('Socket now listening')
while 1:
conn, addr = s.accept()
print('Connected with ' + addr[0] + ':' + str(addr[1]))
new_client = Thread(target=clientthread, args=(conn,))
new_client.start()
s.close()
if __name__ == "__main__":
main()
这是我的客户:
import socket
HOST = ''
PORT = 1337
def main():
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((HOST, PORT))
print("Worked!")
s.close()
if __name__ == "__main__":
main
这是我得到的消息:
Traceback (most recent call last):
File "C:\Users\magshimim\Downloads\responder_client.py", line 4, in <module>
s.connect((HOST, PORT))
OSError: [WinError 10049] The requested address is not valid in its context
一对 (host, port) 用于 AF_INET 地址族,其中host是一个字符串,表示互联网域表示法中的主机名,如“daring.cwi.nl”或 IPv4 地址,如“100.50.200.5”,端口是一个整数。
对于 IPv4 地址,接受两种特殊形式而不是主机地址:
''
表示INADDR_ANY
,用于绑定到所有接口
正如 Michael Butscher 评论的那样,服务器可以绑定到所有接口以进行侦听,这可能包括多个 Internet 连接、本地网络接口或虚拟机网络等。
客户端无法连接到所有接口 - 想象一下尝试打开从您的计算机到“所有网站”的单个连接,这是行不通的,您将需要许多连接,每个连接一个。 您需要提供一个连接地址, 127.0.0.1
是一个特殊地址,始终表示“回送至此本地计算机”。
服务器代码中的IP地址''
(即通配符)代表任意地址。 这意味着服务器将监听所有可用的网络接口。
''
等同于0.0.0.0
并且仅在服务器中使用,而不是在客户端中使用。 对于客户端,它需要知道服务器的实际 IP 地址才能连接到它。
因此,在客户端代码中使用 IP 地址127.0.0.1
已经是正确的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.