Cross-Platform Kompatibilität von socket.getpeername
Verfasst: Dienstag 14. Dezember 2010, 19:38
Guten Abend.
Ich bin heute über folgenden kleinen, aber sehr schwerwiegenden Satz in der Dokumentation zu socket.getpeername gestoßen: „On some systems this function is not supported.” Da dieser Satz, aufgrund seiner Wortkargheit, kaum bis gar nicht hilfreich ist, habe ich beschlossen, der Sache auf den Grund zu gehen. Leider waren diese Versuche mit wenig Erfolg gesegnet, unter anderem ob einer scheinbaren Inkonsistenz in der Python Dokumentation.
Ich habe also die Linux-Manpage zu getpeername zu Gemüte geführt, in welcher den für meine Frage entscheidende Abschnitt wohl „CONFORMING TO; SVr4, 4.4BSD (the getpeername() function call first appeared in 4.2BSD), POSIX.1-2001.” darstellt. Verweist die Dokumentation also auf Systeme, die vor obengennanten Standards erschienen sind? Und wenn ja: Weshalb gibt es in der Python Dokumentation zu getsockname keinen Vermerk über die Kompatibilität, wo doch der „CONFORMING TO” Abschnitt identisch zu dem getpeernames ist? Eventuell ist noch „The third argument of getpeername() is in reality an int * (and this is what 4.x BSD and libc4 and libc5 have). Some POSIX confusion resulted in the present socklen_t, also used by glibc. See also accept(2).” von Bedeutung, welches jedoch ebenso in beiden Manpages zu finden ist.
Ich hoffe, dass jemand ein Bisschen Klarheit in die Angelegenheit bringen kann.
Danke.
Ich bin heute über folgenden kleinen, aber sehr schwerwiegenden Satz in der Dokumentation zu socket.getpeername gestoßen: „On some systems this function is not supported.” Da dieser Satz, aufgrund seiner Wortkargheit, kaum bis gar nicht hilfreich ist, habe ich beschlossen, der Sache auf den Grund zu gehen. Leider waren diese Versuche mit wenig Erfolg gesegnet, unter anderem ob einer scheinbaren Inkonsistenz in der Python Dokumentation.
Ich habe also die Linux-Manpage zu getpeername zu Gemüte geführt, in welcher den für meine Frage entscheidende Abschnitt wohl „CONFORMING TO; SVr4, 4.4BSD (the getpeername() function call first appeared in 4.2BSD), POSIX.1-2001.” darstellt. Verweist die Dokumentation also auf Systeme, die vor obengennanten Standards erschienen sind? Und wenn ja: Weshalb gibt es in der Python Dokumentation zu getsockname keinen Vermerk über die Kompatibilität, wo doch der „CONFORMING TO” Abschnitt identisch zu dem getpeernames ist? Eventuell ist noch „The third argument of getpeername() is in reality an int * (and this is what 4.x BSD and libc4 and libc5 have). Some POSIX confusion resulted in the present socklen_t, also used by glibc. See also accept(2).” von Bedeutung, welches jedoch ebenso in beiden Manpages zu finden ist.
Ich hoffe, dass jemand ein Bisschen Klarheit in die Angelegenheit bringen kann.
Danke.