Grundlegendes Problem bei der Socketprogrammierung
-
Hallo leute,
ich arbeite derzeit ein Tutorial für Socketprogrammierung durch, leider habe ich da ein Fehler mit den ich überhaupt nichts zu anfangen weiss. Auch google konnte mir nicht da weiterhelfen... Leider!
Habe folgenden Test Code in C++ geschrieben in Ubuntu:
#include <cmath> #include <cstdlib> #include <iostream> using namespace std; //**** FEHLER **** // SOCKET socket ( int af, int type, int protocol ); int main (int argc, char *argv[]{ SOCKET s; s=socket(AF_INET,SOCK_STREAM,0); if(s==INVALID_SOCKET){ printf("Fehler: Der Socket konnte nicht erstellt werden, fehler code: % d\n",WSAGetLastError()); return 1; } else{ printf("Socket erstellt!\n"); } return 0; }Ich habe die Fehlerzeile kenntlich gemacht. Der Compiler mekkert mit: " 'SOCKET' does not name a type " müsste ich noch irgendwas bestimmtes in die Headerfiles mit einbinden ?
Danke für eure Anregungen.
MFG
-
Du deklarierst dort eine Funktion socket, die ein SOCKET zurückgibt. Definiert ist die Funktion in irgendeiner anderen Quelldatei, die Du nach dem Kompilieren dazulinkst. Das funktioniert im Prinzip, allerdings ist der Rückgabetyp SOCKET unbekannt. Genauso wie
AF_INET, SOCK_STREAM, INVALID_SOCKET, WSAGetLastError. Der normale Weg ist eigentlicn, dass Du Dir die Deklaration von der Funktionsocket, über eine Headerdatei holst. Dort wird dann nämlich auch irgendwie definiert was ein SOCKET ist. Welche HEader das sind, müsste in deinem Tutorial stehen. Wenn nicht, dann lies ein anderes.
Hier fehlt außerdem noch eine schließende Klammerint main (int argc, char *argv[]{Und du inkludierst iostream, benutzt aber gar nichts daraus. Entweder Du benutzt wie in C++ üblich std::cout aus iostream, oder du nimmst printf aus csdtio.
-
Unter Windows musst du den Header winsock2.h einbinden und gegen ws2_32.lib linken.