neu anfänger
-
#include <stdio.h> // Header für Input/Output #include <windows.h> // Standart-Header für alle Windows-Programme #include <winsock2.h> // Header für die Verwendung von Sockets #include <cmaths> DWORD WINAPI Thread(LPVOID); int main() { long result; // Enthält die Rückgabewerte der Funktionen WSADATA wsa; // Initialisierungs-Daten SOCKET socketAccept; // Socket, der Verbindungen annimt SOCKET socketConnect; // Socket, der eine Verbindung enthält SOCKADDR_IN addrBind; // Daten für das Binden an einen Port // Mit WSAStartup werden die Sockets initialisiert result = WSAStartup(MAKEWORD(2, 0), &wsa); if(result != 0) { printf("Fehler bei WSAStartup(): Code %d", result); return 0; } else { printf("WSAStartup() erfolgreich!"); } // Initialisieren der Struktur SOCKADDR_IN memset(&addrBind, 0, sizeof(SOCKADDR_IN)); addrBind.sin_port = htons(12345); addrBind.sin_family = AF_INET; addrBind.sin_addr.s_addr = ADDR_ANY; result=bind(socketAccept, (SOCKADDR*) &addrBind, sizeof(SOCKADDR_IN)); if(result == SOCKET_ERROR) { printf("Fehler in bind(): Code %d", WSAGetLastError()); return 0; } else { printf("bind() erfolgreich!"); } // Initialisierung des socketAccept socketAccept = socket(AF_INET, SOCK_STREAM, 0); // socketAccept geht in den "listen-mode" result = listen(socketAccept, 10); if(result == SOCKET_ERROR) { printf("Fehler in listen(): Code %d", WSAGetLastError()); return 0; } else { printf("listen() erfolgreich!"); } while(true) { // accept() blockiert solang, bis eine Verbindung angenommen wurde socketConnect = accept(socketAccept, NULL, NULL); if(socketConnect == SOCKET_ERROR) { printf("Fehler in accept(): Code %dProgramm wird fortgesetzt", WSAGetLastError()); continue; } // Thread erstellen und weitermachen CreateThread(0, 0, Thread, (LPVOID) &socket, 0, 0); } return 0; } DWORD WINAPI Thread(LPVOID data) { char buf[256]; // Buffer für empfangene Daten SOCKET socket = (*)data; // der Parameter wird derefernziert // Daten empfangen(blockiert) recv(socket, buf, 255, 0); // Daten senden send(socket, "Du mich auch", 13, 0); // Verbindung schliesen closesocket(socket); return 0; }In dieser Line liegt der error
SOCKET socket = (*)data;Bin neuanfänger, also keine dummen fragen auslachen xD
-
Wo ist hier eine Frage?
Welche Frage sollten wir denn dann auslachen, wenn es keine gibt...
-
Ich habe einen einzigen error wie im obigen post beschrieben und den möchte
ich beheben...
und ich hoffe ihr könnt mir helfen
Jetzt könnt ihr lachen
-
Aus LPVOID schlussfolgere ich, dass data ein void-Pointer ist, d.h. du musst in Zeile 87 den void-Pointer nach SOCKET casten.
PS: ne Compiler-Fehlermeldung ist immer ganz hilfreich...
-
SOCKET socket = *((SOCKET*)data);
-
Da ist aber noch ein ganz anderer Fehler!!!
Mittels "&socket" übergibst du die Adresse der socket()-Funktion -)
Du willst wohl eher '&socketConnect' übergeben...