C++ Socket fehlermeldung vom Compiler
-
Guten Abend liebe Community,
Ich beginne gerade mit der Socketprogrammierung, aber naja mein Compiler halt...
Weiß jemand wie ich diese Fehler beheben kann?
Ich meine er würde die Header nicht finden// Netzwerkprogrammierung, WINSOCK API, Sockets // TCP Server #pragma comment(lib, "ws2_32.lib") #include <cstdio> #include <iostream> #include <WinSock2.h> #include <Windows.h> using namespace std; char recvbuf[256]; int main() { // Hilfsvariable long res; // Versionsdaten WSADATA wsaData; // ws2_32.dll aktivieren res = WSAStartup(MAKEWORD(2, 1), &wsaData); if(res == 0 ) cout << "WSAStartup()\t\t successful" << endl; else cout << "error WSAStartup(): " << WSAGetLastError() << endl; // Socket Deskriptoren SOCKET slisten, client; // Socket anforder bzw. Kommunikationsendpunkt einrichten slisten = socket(AF_INET, SOCK_STREAM, 0); if(slisten != INVALID_SOCKET ) cout << "socket() \t\t successful" << endl; else cout << "error socket(): " << WSAGetLastError() << endl; // Verbindungsinformationen sockaddr_in info; // sockaddr info.sin_addr.s_addr = inet_addr("127.0.0.1"); info.sin_family = AF_INET; info.sin_port = htons(54345); int infolen = sizeof(info); res = bind(slisten, (struct sockaddr*)&info, infolen); if(res != SOCKET_ERROR ) cout << "bind() \t\t successful" << endl; else cout << "error bind(): " << WSAGetLastError() << endl; // Warteschlange für einkommende Verbindungen res = listen(slisten, SOMAXCONN); if(res != SOCKET_ERROR ) cout << "listen() \t\t successful" << endl; else cout << "error listen(): " << WSAGetLastError() << endl; sockaddr_in clientinfo; int clientinfolen = sizeof(clientinfo); while(1) { // Verbindung aus der Warteschlange abholen client = accept(slisten, (struct sockaddr*)&clientinfo, &clientinfolen); if(client != SOCKET_ERROR) cout << "client accepted: " << inet_ntoa(clientinfo.sin_addr) << ":" << ntohs(clientinfo.sin_port) << endl; // über das Socket kommunizieren res = send(client, "server message received", strlen("server message received"), 0); if(res == SOCKET_ERROR) cout << "error send()" << WSAGetLastError() << endl; res = recv(client, recvbuf, 256, 0); if(res == SOCKET_ERROR) cout << "error recv(): " << WSAGetLastError() << endl; else cout << res << " bytes received: " << recvbuf << endl; } closesocket(client); closesocket(slisten); WSACleanup(); return 0; }
Fehlermeldungen:
C:\Users\\AppData\Local\Temp\ccu7n369.o winsock_server.cpp:(.text+0x26): undefined reference to `__imp_WSAStartup' C:\Users\\AppData\Local\Temp\ccu7n369.o winsock_server.cpp:(.text+0x62): undefined reference to `__imp_WSAGetLastError' C:\Users\\AppData\Local\Temp\ccu7n369.o winsock_server.cpp:(.text+0xa9): undefined reference to `__imp_socket' C:\Users\\AppData\Local\Temp\ccu7n369.o winsock_server.cpp:(.text+0xe7): undefined reference to `__imp_WSAGetLastError' C:\Users\\AppData\Local\Temp\ccu7n369.o winsock_server.cpp:(.text+0x125): undefined reference to `__imp_inet_addr' C:\Users\\AppData\Local\Temp\ccu7n369.o winsock_server.cpp:(.text+0x142): undefined reference to `__imp_htons' C:\Users\\AppData\Local\Temp\ccu7n369.o winsock_server.cpp:(.text+0x176): undefined reference to `__imp_bind' C:\Users\\AppData\Local\Temp\ccu7n369.o winsock_server.cpp:(.text+0x1b2): undefined reference to `__imp_WSAGetLastError' C:\Users\\AppData\Local\Temp\ccu7n369.o winsock_server.cpp:(.text+0x1f8): undefined reference to `__imp_listen' C:\Users\\AppData\Local\Temp\ccu7n369.o winsock_server.cpp:(.text+0x234): undefined reference to `__imp_WSAGetLastError' C:\Users\\AppData\Local\Temp\ccu7n369.o winsock_server.cpp:(.text+0x291): undefined reference to `__imp_accept' C:\Users\\AppData\Local\Temp\ccu7n369.o winsock_server.cpp:(.text+0x2b7): undefined reference to `__imp_ntohs' C:\Users\\AppData\Local\Temp\ccu7n369.o winsock_server.cpp:(.text+0x2cb): undefined reference to `__imp_inet_ntoa' C:\Users\\AppData\Local\Temp\ccu7n369.o winsock_server.cpp:(.text+0x33a): undefined reference to `__imp_send' C:\Users\\AppData\Local\Temp\ccu7n369.o winsock_server.cpp:(.text+0x352): undefined reference to `__imp_WSAGetLastError' C:\Users\\AppData\Local\Temp\ccu7n369.o winsock_server.cpp:(.text+0x3a6): undefined reference to `__imp_recv' C:\Users\\AppData\Local\Temp\ccu7n369.o winsock_server.cpp:(.text+0x3be): undefined reference to `__imp_WSAGetLastError' c:\program files (x86)\dev-cpp\mingw64\x86_64-w64-mingw32\bin\ld.exe C:\Users\\AppData\Local\Temp\ccu7n369.o: bad reloc address 0x10 in section `.xdata' C:\Users\\Desktop\collect2.exe [Error] ld returned 1 exit status
-
Ws2_32.lib dazu linken.
-
Dieser Thread wurde von Moderator/in Arcoth aus dem Forum C++ (alle ISO-Standards) in das Forum Compiler- und IDE-Forum verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Hmm, vielleicht wäre das besser im WinAPI Board aufgehoben...
-
Arcoth schrieb:
Hmm, vielleicht wäre das besser im WinAPI Board aufgehoben...
Ist schon ein Compilerproblem: mingw versteht pragma comment nicht => lib zu Fuß binden.
-
Könnt ihr mir einen anderen Compiler empfehlen ?
Ich hab schon mit der asio Bibiothek von boost die geht auch nich
Hab sie mir jetzt runtergeladen wir kann ich sie jetzt da einbinden?
-
VS2015
-
Mit den Programmen von Microsoft hab ich immer Probleme ...
Kann z.B nicht diese Klammer setzen "}" die andere geht, und vieles mehr -.-
Außerdem komm ich damit nicht sogut klar, ich mag den weißen Hintergrund nicht.
Kann schlecht den Code lesen, brauch nen schwarzen Hintergrund xD!
-
Wusste gar nicht, dass es auf Linux auch winsock und C: gibt ...
-
MagDenNamenNich schrieb:
Mit den Programmen von Microsoft hab ich immer Probleme ...
Kann z.B nicht diese Klammer setzen "}" die andere geht, und vieles mehr -.-
Außerdem komm ich damit nicht sogut klar, ich mag den weißen Hintergrund nicht.
Kann schlecht den Code lesen, brauch nen schwarzen Hintergrund xD!Das mit der Klammer musst du mal genauer erklären. Das wäre ja wohl schon jemandem aufgefallen wenn man in einer Entwicklungsumgebung keine geschweiften Klammern schreiben kann. Seit Visual Studio 2012 (oder spätestens mit 2013) gibts ein Dark Theme. Da haste deinen dunklen Hintergrund. Es gibt sogar eine kostenlose Version für Privatpersonen: https://www.visualstudio.com/en-us/products/visual-studio-community-vs.aspx
-
Selbst bei VS 2005 kann man schon die Farben ändern:
Tools - Options - Environment - Fonts and ColorsWeiß jetzt leider nicht wie die Menüs in der deutschen Version heißen.
-
Jetzt kein spaß ich kann diese Klammer einfach nicht setzen!
Auf meinem altem Lapi ging es auch nicht, und jetzt auf dem neuen Pc ebenfalls
Was geht da eigentlich ab...