Probleme mit DEV-C++
-
mein Dev c++ Compiler spuckt mir bei diesem noch recht einfachen Programm:
#include <iostream> #include <WinSock.h> #pragma comment(lib, "libws2_32.a") int main() { SOCKET s; sockaddr_in server; unsigned long addr; WSADATA data; WSAStartup(MAKEWORD(1, 1), &data); s = socket(AF_INET, SOCKET_STREAM,0); if(s == SOCKET_ERROR) std::cout << "Fehler bei socket()"; addr = inet_addr("127.0.0.1"); memcpy((char *)server.sin_addr, &addr, sizeof(addr)); server.sin_family = AF_INET; server.sin_port = htons(89); if(connect(s,(sockaddr *)&server, sizeof(server)) == SOCKET_ERROR) std::cout << "Error"; WSACleanup(); std::cin.get(); return 0; }
Den Fehler aus, dass SOCKET_STREAM nicht deklariert ist... Ist dass nicht in winsock.h? und er sagt er kann server.sockaddr_in::sin_addr' nicht in `char*' konvertieren...
Danke für die Hilfe!
-
Falsches Forum.
Nebenbei: Es istSOCK_STREAM
, ohneET
wie du wunderbar hättest googlen können.Und den Link in meiner Signatur einmal ansehen. Den ganzen Code hinzupfeffern war unnötig.
-
memcpy((char *)server.sin_addr, ... // Zeile 22
Ich frag mich, wie du auf die Idee kommst, ein Stackobjekt in einen Zeiger zu konvertieren. Wenn, dann schreib
reinterpret_cast<void*>(&server.sin_addr)
zumal
memcpy
einenvoid
-pointer erwartet
-
#pragma comment(lib, "libws2_32.a")
Diese Zeile nimmt Dev-C++ nicht an. Du musst die librarys manuell im Linker hinzufügen. Dazu musst du oben auf Projekt-> Projekt Optionen -> Parameter -> Bibliothek/Objekt hinzuf. gehen und dann in deinem Dev-C++-Ordner unter "lib" "libws2_32.a" auswählen.
-
Sone schrieb:
reinterpret_cast<void*>(&server.sin_addr)
zumal
memcpy
einenvoid
-pointer erwartetKonvertierungen nach void* sind implizit.