Verständnisproblem bei Struktur
-
sockaddr_in sin; sin.sin_port=htons(12345); sin.sin_addr.s_addr=INADDR_ANY; sin.sin_family=AF_INET;Dieser Code-Schnipsel ist von einem Winsock-Programm kopiert. Dort steht, dass das eine Struktur sein soll. Allerdings kenne ich das so, dass Strukturen mit
structeingeleitet werden. Wie kann das eine Struktur sein?

Hier das Programm:
#include <windows.h> //Required for socket init #include <iostream> using namespace std; //server int main() { char buf2[]="test"; long rc; SOCKET kSock; SOCKET client; int len; char buf[256]=""; WSAData wsdata; WORD wsver=MAKEWORD(2, 0); //We want Winsock 2.0 int nret=WSAStartup(wsver, &wsdata); //Pass version 2.0 and pointer to implement if(nret != 0) { cout<<"Startup failed, error code: "<<WSAGetLastError(); WSACleanup(); return -1; } cout<<"Init success\n"; kSock=socket(AF_INET, SOCK_STREAM, 0); if(kSock == INVALID_SOCKET) { cout<<"Socket init failed"; return -1; } cout<<"Socket initialized\n"; sockaddr_in sin; sin.sin_port=htons(12345); sin.sin_addr.s_addr=INADDR_ANY; sin.sin_family=AF_INET; if(bind(kSock,(sockaddr*)&sin, sizeof(sin)) == SOCKET_ERROR) { cout<<"Failed to bind\n"; WSACleanup(); return -1; } cout<<"Bind successful!\n"; rc=listen(kSock,10); if(rc==SOCKET_ERROR) { cout<<"Error "<<GetLastError(); system("PAUSE"); return 0; } else { cout<<"acceptSocket ist im listen Modus....\n"; } // Verbindung annehmen client=accept(kSock,NULL,NULL); if(client==INVALID_SOCKET) { cout<<"Fehler: accept, fehler code: <<"<<WSAGetLastError(); return 1; } cout<<"Neue Verbindung wurde akzeptiert!\n"; // Daten austauschen while(rc!=SOCKET_ERROR) { send(client,buf2,strlen(buf2),0); rc=recv(client,buf,256,0); if(rc==0) { cout<<"Server hat die Verbindung getrennt..\n"; system("PAUSE"); return 0; } if(rc==SOCKET_ERROR) { cout<<"Fehler: recv, fehler code: "<<WSAGetLastError(); break; } cout<<"Client sendet: "<<system(buf); cout<<"\n"; } closesocket(client); //Close both socket handles closesocket(kSock); WSACleanup(); return 0; }
-
skullyan schrieb:
Allerdings kenne ich das so, dass Strukturen mit
structeingeleitet werden. Wie kann das eine Struktur sein?

Also ich sehe das auch so, dass Struturen mit struct anfangen. Aber wenn du die allgemeine Definition von Strukturen kennst, also:
Strukturen sind eine Zusammenfassung mehrerer Datentypen oder Definitionen.
Dann kannst du das auch sicher irwie herleiten.
best rgds
Agahan
-
skullyan schrieb:
Allerdings kenne ich das so, dass Strukturen mit
structeingeleitet werden. Wie kann das eine Struktur sein?Das Programm ist in C++, nicht C. In C++ kann man das struct beim Deklarieren einer Struktur weglassen.
-
Und selbst in C könnte man mit
typedef struct { ... } moep;Das ganze auch über moep ansprechbar machen.