ipv6 python 套接字不工作
ipv6 python sockets not working
我有一个简单的客户端服务器程序,服务器端可以工作,但由于某种原因我无法让客户端与服务器进行交互。我能够启动服务器并使用 nc -u ::1 50007
并连接到它并且它按预期工作。
服务器代码:
import socket
import sys
def main():
HOST = '::1'
PORT = 50007
res = socket.getaddrinfo(HOST, PORT, socket.AF_UNSPEC, socket.SOCK_STREAM, 0, socket.AI_PASSIVE)
af, socktype, proto, canonname, sa = res[0]
try:
s = socket.socket(socket.AF_INET6, socket.SOCK_DGRAM)
s.bind(sa)
while True:
data, addr = s.recvfrom(1024)
if not data:
break
print 'server received %r from %r' % (data, addr)
s.sendto(data, addr)
s.close()
except socket.error, msg:
print msg
if __name__ == '__main__':
main()
客户代码:
import socket
import sys
def main():
HOST = '2015:cc00:bb00:aa00::2'
PORT = 50007
res = socket.getaddrinfo(HOST, PORT, socket.AF_UNSPEC, socket.SOCK_STREAM)
af, socktype, proto, canonname, sa = res[0]
try:
s = socket.socket(socket.AF_INET6, socket.SOCK_DGRAM)
s.connect(sa)
s.send('Hello, world')
data, addr = s.recvfrom(1024)
s.close()
print 'Received', repr(data)
except socket.error as e:
print e
if __name__ == '__main__':
main()
我可以从客户端 ping 通服务器,但我也不能 nc -u 2015:cc00:bb00:aa00::2 50007
。当我 运行 客户端代码时,我收到连接被拒绝的错误。不确定为什么没有连接,有什么想法吗?
问题是您的服务器正在侦听本地主机 ::1
,但您正在尝试连接到 2015:cc00:bb00:aa00::2
,这是一个不同的接口。尝试在您的服务器中设置 HOST = "::"
以使其绑定到所有接口。
我有一个简单的客户端服务器程序,服务器端可以工作,但由于某种原因我无法让客户端与服务器进行交互。我能够启动服务器并使用 nc -u ::1 50007
并连接到它并且它按预期工作。
服务器代码:
import socket
import sys
def main():
HOST = '::1'
PORT = 50007
res = socket.getaddrinfo(HOST, PORT, socket.AF_UNSPEC, socket.SOCK_STREAM, 0, socket.AI_PASSIVE)
af, socktype, proto, canonname, sa = res[0]
try:
s = socket.socket(socket.AF_INET6, socket.SOCK_DGRAM)
s.bind(sa)
while True:
data, addr = s.recvfrom(1024)
if not data:
break
print 'server received %r from %r' % (data, addr)
s.sendto(data, addr)
s.close()
except socket.error, msg:
print msg
if __name__ == '__main__':
main()
客户代码:
import socket
import sys
def main():
HOST = '2015:cc00:bb00:aa00::2'
PORT = 50007
res = socket.getaddrinfo(HOST, PORT, socket.AF_UNSPEC, socket.SOCK_STREAM)
af, socktype, proto, canonname, sa = res[0]
try:
s = socket.socket(socket.AF_INET6, socket.SOCK_DGRAM)
s.connect(sa)
s.send('Hello, world')
data, addr = s.recvfrom(1024)
s.close()
print 'Received', repr(data)
except socket.error as e:
print e
if __name__ == '__main__':
main()
我可以从客户端 ping 通服务器,但我也不能 nc -u 2015:cc00:bb00:aa00::2 50007
。当我 运行 客户端代码时,我收到连接被拒绝的错误。不确定为什么没有连接,有什么想法吗?
问题是您的服务器正在侦听本地主机 ::1
,但您正在尝试连接到 2015:cc00:bb00:aa00::2
,这是一个不同的接口。尝试在您的服务器中设置 HOST = "::"
以使其绑定到所有接口。