Struktur initialisieren....
-
Sone schrieb:
Na, die WinAPI Sockets wirste doch kennen?
Nein. Was ist dieses 'Win' von dem hier alle immer reden?
-
SeppJ schrieb:
Was ist dieses 'Win' von dem hier alle immer reden?
Hat was mit WinWin-Situationen zu tun - "Win(dows) win(s) - you loose"

-
SeppJ schrieb:
Sone schrieb:
Na, die WinAPI Sockets wirste doch kennen?
Nein. Was ist dieses 'Win' von dem hier alle immer reden?
Das ist die Abkürzung für Windows API, aber ich bin sicher, du weißt das schon längst und bist nur von der Abkürzung genervt...
-
Sone schrieb:
Das ist die Abkürzung für Windows API, aber ich bin sicher, du weißt das schon längst und bist nur von der Abkürzung genervt...
Dein Textverständnis ist eher oberflächlich, oder? Du bist so einer von den Typen die auf "Können sie mir sagen, wie spät es ist?" mit Ja/Nein antworten.
-
SeppJ schrieb:
Sone schrieb:
Das ist die Abkürzung für Windows API, aber ich bin sicher, du weißt das schon längst und bist nur von der Abkürzung genervt...
Dein Textverständnis ist eher oberflächlich, oder? Du bist so einer von den Typen die auf "Können sie mir sagen, wie spät es ist?" mit Ja/Nein antworten.
Nö. Allerdings sehe ich es als dein Problem, wenn du hier Probleme mit "Win" hast.
-
Kinder

btw. ist weder SOCKET noch sockaddr_in auf die Windows API beschränkt.
Beide Typen sind Bestandteil der POSIX Socket Spezifikation.
-
SOCKET nicht, der tyedef ist ne Microsoft Idee.
-
Hi,
danke für die rege Anteilnahme. Ich dachte nur dases ein guter Stil ist alle Member zu initialisieren. Und ich nicht wusste ob der Konstruktoraudruf der Struct socket_addr_in seine Arbeit tut. So wie es aussueht ja. Ich belege die Teile der Struktur die ich benötige nachträglich mit den richtigen Werten.
Danke!Gruß
-
Wozu dienen die anderen Member ueberhaupt? Ein Socket wird durch dein Handle, unter Windows der SOCKET, unter POSIX der int identifiziert.
-
@Kellerautomat:
SOCKET unter Windows ist auch nur ein typedef auf int, man kann also getrost portabel int verwenden
Allerdings hast du recht... die beiden zusätzlichen ints scheinen mir doch fragwürdig... (ersteren halte ich für den Rückgabewert von WSAStartup und zweiteren zur Speicherung aller möglicher Fehlercodes...)
kA ob das wirklich nötig ist, die extra in Attributen zu speichern statt sie lokal handzuhaben...auch die sockaddr_in dürfte eig kein Attribut sein müssen.
Üblicherweise (ich gehe davon aus, dass du am Client arbeitest) wird die nur einmal zum Aufruf von connect verwendet und dann nie wieder... da erscheint ein Attribut als Verschwendung...
-
DrakoXP schrieb:
@Kellerautomat:
SOCKET unter Windows ist auch nur ein typedef auf int, man kann also getrost portabel int verwenden
Soweit ich weiss ist es unsigned unter Windows, aber sicher bin ich mir nicht.
-
-
DrakoXP schrieb:
@Kellerautomat: du hast Recht.
winsock.h und winsock2.h schrieb:
typedef UINT_PTR SOCKET;Das ist aber nicht unbedingt
unsigned int.
Was ist eigentlich so schwer daran, sich portable typedefs zu basteln anstatt ahnungslos über Gefrickel zu diskutieren?#ifdef _WIN32 typedef SOCKET SocketHandle; #else typedef int SocketHandle; #endifFrankTheFox schrieb:
wird so die Struktur korrekt initialiert oder is das Quark?
SocketClient::SocketClient(): m_startup(-1), m_error(0), m_sock(0), m_client_addr() { }Wenn man dem Socket schon einen Standardwert geben muss, warum denn bitte Null? Der Wert für ein ungültiges Socket ist -1, auf Windows
INVALID_SOCKET.Und wenn wir schon in C++ sind, warum nicht einfach Boost.Asio?