Neuanfänger, bitte helfen
-
#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
-
WINAPI Threadja triffts irgendwie

--> damit will ich sagen, falsches unter ForumEDIT: ja wird doch irgwann jdm verschieben
-
Oh sry ^^
-
Was liegt denn da für ein Error? Nicht nur das der Quellcode C ist, wie Tim06TR gesagt hat ist es auch WinApi... Also doppelt falsch

-
ich kann sagen was der compiler ausgibt, interessiert mich jetzt nämlich auch.
87 C:\Dev-Cpp\testing functions.cpp expected primary-expression before ')' token
87 C:\Dev-Cpp\testing functions.cpp expected,' or;' before "data"er ist mit SOCKET socket = (*)data; ganz und gar nicht einverstanden, ist irg logisch, dass sieht sehr merkwürdig aus, da ich mich mit winapis nich auskenne halte ich lieber den mund.
Ps: es heißt cmath nicht cmaths ^^
-
Was soll diese Zeile bewirken?
SOCKET socket = (*)data;Das ist nämlich jenseits sämtlicher C++-Syntaxregeln. Auch WinAPI ändert nichts an den Sprachfeatures.
-
ich bin zwar nicht der Thread ersteller, aber ohne declaration geit es nicht, da der "sockel" gebraucht wird und ohne zuweisung ist das auch käse, weil er nicht weiß welcher. aber wie gesagt ich hatl mich hier raus. hmmm
-
Tim06TR schrieb:
aber wie gesagt ich hatl mich hier raus.
Widerspricht sich zwar leicht mit deinem Ratespiel, aber wäre vielleicht nicht die schlechteste Idee.

Tim06TR schrieb:
ich bin zwar nicht der Thread ersteller, aber ohne declaration geit es nicht, da der "sockel" gebraucht wird und ohne zuweisung ist das auch käse, weil er nicht weiß welcher.
Deklaration ist vorhanden und was du mit der Zuweisung meinst, weiss ich auch nicht. Das Problem liegt wie gesagt an der fehlerhaften Syntax. Was sollte das
(*)bewirken? Einen Cast?
-