Sockets: Server.exe stürzt einfach ab.
-
hab den definiert. jetzt hab ich die klammer gesetzt und fehler:
"Listen": Nicht alle Steuerelementpfade geben einen Wert zurück.
und es wird nix angezeigt
-
metapoint2011 schrieb:
"Listen": Nicht alle Steuerelementpfade geben einen Wert zurück.
Deine Funktion soll laut Deklaration ein DWORD zurückgeben. Tut sie aber nicht.
metapoint2011 schrieb:
und es wird nix angezeigt
Dann steht das Programm wohl noch im connect.
-
MFK schrieb:
metapoint2011 schrieb:
"Listen": Nicht alle Steuerelementpfade geben einen Wert zurück.
Deine Funktion soll laut Deklaration ein DWORD zurückgeben. Tut sie aber nicht.
und wie mach ich das?
metapoint2011 schrieb:
und es wird nix angezeigt
Dann steht das Programm wohl noch im connect.
oh stimmt ja.
-
metapoint2011 schrieb:
MFK schrieb:
Deine Funktion soll laut Deklaration ein DWORD zurückgeben. Tut sie aber nicht.
und wie mach ich das?
Mit der return-Anweisung.
-
{ MessageBox(NULL, _T("Verbunden!"), _T("Status"), MB_OK);} return 0; }
-
alles klar geht. jetzt mach ich schnell den server.
-
wenn ich jetzt den server starte kommt garnix. und wenn ich dazu den client starte kommt auch nicht
Server:
DWORD WINAPI Listen(LPVOID) { SOCKET s; SOCKET connectedSocket; long rc; SOCKADDR_IN addr; ///// Serversocket erstellen s=socket(AF_INET,SOCK_STREAM,0); /////Server Binden memset(&addr,0,sizeof(SOCKADDR_IN)); addr.sin_family=AF_INET; addr.sin_port=htons(12345); addr.sin_addr.s_addr=ADDR_ANY; rc=bind(s,(SOCKADDR*)&addr,sizeof(SOCKADDR_IN)); if(rc==SOCKET_ERROR) { MessageBox(NULL, _T("Server Binden gescheitert!"), _T("Fehler"), MB_OK); return 1;} /////Server listen rc=listen(s,10); if(rc==SOCKET_ERROR) { MessageBox(NULL, _T("Listen Fehler!"), _T("Fehler"), MB_OK);} else { MessageBox(NULL, _T("Server ist im listenmodus....."), _T("Info"), MB_OK);} /////Eingehende Verbindungen Akzeptieren connectedSocket=accept(s,NULL,NULL); if(connectedSocket==INVALID_SOCKET) { MessageBox(NULL,_T("accept Fehler!"), _T("Fehler"), MB_OK); return 1;} else { MessageBox(NULL, _T("Neue Verbindung Akzeptiert!"), _T("Status"), MB_OK); } return 0; } int startWinsock(void) { WSADATA wsa; return WSAStartup(MAKEWORD(2,0),&wsa); }hab jetzt n button gemacht im hauptfenster. wenn ich ihn klicke gehts
case WM_COMMAND: switch(LOWORD(wParam)) { case 1: CreateThread(NULL,0,Listen,(LPVOID)0,0,0); } break;nur kommt dann server binden gescheitert
-
zeig mal die WinMain.
Wo rufst du denn den ListenThread auf?
-
was auch komisch war, das das auch schon kam als ich den button getrückt habe,
obwohl ich die switch schleife mit wParam noch garnicht geschrieben hatte.LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { static HWND hWndBtn; PAINTSTRUCT ps; HDC hdc; switch (message) { case WM_CREATE: hWndBtn = CreateWindow(_T("button"), _T("start"), WS_VISIBLE | WS_CHILD | WS_BORDER, 10, 10, 40, 21, hWnd, (HMENU) 1, hInst, NULL ); return 0; case WM_COMMAND: switch(LOWORD(wParam)) { case 1: CreateThread(NULL,0,Listen,(LPVOID)0,0,0); break; } return 0; case WM_PAINT: hdc = BeginPaint(hWnd, &ps); ......................
-
Jaja, hattest ja vorher schon gepostet, daß du nun nen Button hast.
Der Thread wird ja nun auch gestartet.
Aber irgendwas stimmt mit dem Bind nicht.
socketAccept = socket(AF_INET, SOCK_STREAM, 0); // 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) { MessageBox(NULL, _T("Server Binden gescheitert!"), _T("Fehler"), MB_OK); return 1; } else { MessageBox(NULL, _T("Server Binden erfolgreich!"), _T("OK"), MB_OK); }So sieht das Binding bei mir aus.
Mußte mal gucken und mit deinem vergleichen.
Bei mir läuft es so.
-
hab den fehler
/////START WINSOCK rc=startWinsock(); if(rc!=0) { MessageBox(NULL, _T("Fehler: startWinsock"), _T("Fehler!"), MB_OK); return 1;}das hat gefehlt jetzt teste ich nochmal alles.
-
es geht

ich dank dir das du mir geholfen hast und den anderen.