【问题标题】:ipv6 python sockets not workingipv6 python套接字不工作
【发布时间】:2015-06-11 19:46:39
【问题描述】:

我有一个简单的客户端服务器程序,服务器端可以工作,但由于某种原因,我无法让客户端与服务器交互。我能够启动服务器并使用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。当我运行客户端代码时,出现连接被拒绝错误。不知道为什么它没有连接,有什么想法吗?

【问题讨论】:

    标签: python sockets ipv6


    【解决方案1】:

    问题是您的服务器正在侦听 localhost ::1,但您尝试连接到 2015:cc00:bb00:aa00::2,这是一个不同的接口。尝试在您的服务器中设置 HOST = "::" 以使其绑定到所有接口。

    【讨论】:

    • 感谢工作,所以 ipv6 :: 绑定到所有接口?
    猜你喜欢
    • 2021-08-25
    • 2021-12-19
    • 1970-01-01
    • 1970-01-01
    • 2013-03-14
    • 1970-01-01
    • 2010-10-16
    • 1970-01-01
    • 2011-07-18
    相关资源
    最近更新 更多