Warum gibt es WSA Pendants zu socket(), connect(), send(), ... aber nicht zu closesocket()?
-
Hi,
<Titel>... damit meine ich:
socket() -> WSASocket()
connect() -> WSAConnect()
send() -> WSASend()
sendto() -> WSASendTo()
recv() -> WSARecv()
recvfrom() -> WSARecvFrom()
...
closesocket() -> WSA
()Danke
-
> man closesocket Keine Handbuchseite für closesocket
-
knivil schrieb:
> man closesocket Keine Handbuchseite für closesocketClownflakes gefrühstückt?
-
@Linuzz:
Die WSA* Funktionen sind immer irgendeine Erweiterung, also haben mehr Parameter oder verstehen mehr Flags oder sowas in der Art.
Und naja, was willst du bei closesocket() grossartig anders machen/erweitern?
-
hustbaer schrieb:
@Linuzz:
Die WSA* Funktionen sind immer irgendeine Erweiterung, also haben mehr Parameter oder verstehen mehr Flags oder sowas in der Art.
Und naja, was willst du bei closesocket() grossartig anders machen/erweitern?Danke für die Information. Da hast du natürlich Recht...
Ist auch gar nicht so wichtig. Nur, weil ich sonst überall die WSA-Funktionen benutze und eigene Funktionsnamen in CamelCase schreibe, hat mich das ein wenig gestört.
-
Du verstehst nicht, es gibt kein closesocket unter Linux. Ich habe auch keinen Verweis in Beej's Guide to Network Programming gefunden. Wenn es also das so nicht in der Standard C-Api gibt, warum sollte man dann WSA davorsetzen, um den Unterschied zu etwas kenntlich zu machen, das gar nicht existiert.
-
knivil schrieb:
Du verstehst nicht, es gibt kein closesocket unter Linux. Ich habe auch keinen Verweis in Beej's Guide to Network Programming gefunden. Wenn es also das so nicht in der Standard C-Api gibt, warum sollte man dann WSA davorsetzen, um den Unterschied zu etwas kenntlich zu machen, das gar nicht existiert.
Dann halt close(). Tut mir Leid, dass ich nicht alles auf die Goldwaage lege...
WSAClose gibt es aber auch nicht, in sofern ist das Thema seit meinem letzten Beitrag bzw. seit der Antwort von hustbaer (
) gegessen.
-
Dann halt close(). Tut mir Leid, dass ich nicht alles auf die Goldwaage lege
Das hat nichts mit der Goldwaage zu tun, leider kann ich nicht erraten, was du meinst. Du musst es schon sagen.
-
knivil ich glaube du bist wirklich so dumm wie du tust.

-
Die Frage ist eigentlich: warum heisst closesocket() in Windows closesocket() und nicht gleich WSAClose()?
Ich hab' keine wirklich gute Antwort, nur eine Vermutung: die ganzen WSA* Funktionen sind erst später dazugekommen, eben als Erweiterungen zur "originalen" Sockets API. Und als die erste WinSockets Version definiert wurde, wollte man mit den Namen so nah wie möglich an den originalen bleiben - inklusive "all lowercase" und dem Nicht-Verwenden von Prefixes.
ioctlsocket() ist ein ähnlicher Fall.
ioctlsocket() gibt es auf *NIX Systemen auch nicht, dort heisst es einfach nur ioctl().
In der ursprünglichen Windows-Sockets API wurde die Funktion - analog zu closesocket() - als ioctlsocket() übernommen.Da die Funktion später allerdings erweitert wurde, gibt es eine erweiterte WSAIoctl() Funktion.
Sogesehen finde ich es nicht ganz unpassend zu sagen, dass es keine WSAClose() Funktion gibt, da closesocket() eben nie erweitert wurde.
-
knivil schrieb:
Dann halt close(). Tut mir Leid, dass ich nicht alles auf die Goldwaage lege
Das hat nichts mit der Goldwaage zu tun, leider kann ich nicht erraten, was du meinst. Du musst es schon sagen.
Du könntest mal versuchen weniger einsilbige Antworten zu schreiben, ich glaube dann würden dich viele besser verstehen.
Davon abgesehen hat hier niemand nach Linux gefragt. Und die Sockets-Funktionen sind auch nicht Teil der Standard-C API.
-
-
sehr schön mal die unterschiedlichen antworten in div foren zu sehen. stackoverflow hat auch noch eine größere userbase...

-
hustbaer schrieb:
Davon abgesehen hat hier niemand nach Linux gefragt. Und die Sockets-Funktionen sind auch nicht Teil der Standard-C API.
Nur das socket close oder recv() eben BSD Standard sind, der Name Linuzz suggestiv ist und die WSA-Funktionen das entsprechende Pendant fuer Windows darstellen.
-
knivil schrieb:
hustbaer schrieb:
Davon abgesehen hat hier niemand nach Linux gefragt. Und die Sockets-Funktionen sind auch nicht Teil der Standard-C API.
Nur das socket close oder recv() eben BSD Standard sind, der Name Linuzz suggestiv ist und die WSA-Funktionen das entsprechende Pendant fuer Windows darstellen.
Merkwürdig: Von Linuzz hast Du den Schritt zu Linux geschafft, aber von closesocket zu close bist Du überfordert.
BTW.: Hier geht es um Windows. BSD, Linux und anderes spielt hier, wenn überhaupt, nur eine untergeordnete Rolle.
mfg Maritn
-
knivil schrieb:
hustbaer schrieb:
Davon abgesehen hat hier niemand nach Linux gefragt. Und die Sockets-Funktionen sind auch nicht Teil der Standard-C API.
Nur das socket close oder recv() eben BSD Standard sind, der Name Linuzz suggestiv ist und die WSA-Funktionen das entsprechende Pendant fuer Windows darstellen.
und?