2017-12-19 4 views
1

Ich bin versucht zu bekommen IPv6 arbeitet mit Golang net.Listen() jedoch halte ich die folgende Fehlermeldung erhalten:Golang net.Listen IPv6

listen tcp [xxxx::xxx:xxxx:fe4f:7e0b]:9443: bind: invalid argument

Code:

s.Listener, err = net.Listen("tcp", config.LocalNode().IP+":"+config.LocalNode().Port) 

Irgendwelche Ideen, warum Ich stoße auf dieses Problem? IPv4 scheint zu funktionieren np

+1

Sie haben die IP-Adresse Präfix x'ed, so kann ich nicht sagen, aber sind Sie sicher, dass das eine routbare IPv6-Adresse ist? Haben Sie das 'tcp6'-Netzwerk speziell verwendet? – JimB

+0

@JimB Ich habe absichtlich "x" die IPv6-Adresse raus. Ich habe die Überprüfung verdoppelt, um sicherzustellen, dass die von mir verwendete IPv6-Adresse gültig ist. Außerdem habe ich versucht, tcp6 speziell zu verwenden, leider habe ich immer noch das gleiche Problem. – Zander17

+1

Ich weiß, dass Sie es absichtlich xxed haben, aber es verschleiert die Art der Adresse, die es ist. Wenn Sie nach dem Muster von xs denken, binden Sie möglicherweise eine nicht routbare Adresse ohne einen gültigen Bereich, was Ihnen diesen Fehler gibt. Ist das wirklich eine gültige, global gültige Adresse? – JimB

Antwort

3

Der Versuch, eine Link-Scoped-IPv6-Adresse ohne einen gültigen Bereich zu binden, führt zu diesem Fehler vom Betriebssystem. Wenn Sie tatsächlich eine Adresse mit Linkbereich wünschen, müssen Sie die richtige Bereichskennung angeben, z.

"[fe80::4c3:3cff:fe4f:7e0b%eth0]:9443" 

Andernfalls müssen Sie eine gültige global gültige IPv6-Adresse verwenden.

"[2600:1f18:63ef:e802:355f:aede:dbba:2c03]:9443"