Here is my code:
When I run the program and click listen it freezes. I think I have the problem singled out to the "accept". If I take out all the code from accept and below, it works fine. If I just leave the accept and take out the socket code below it, it freezes. What could be the problem?Code:BOOL CALLBACK DlgProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lParam) { HWND display = GetDlgItem(hwnd,IDL_DISPLAY); int n = 0; switch(Message) { case WM_INITDIALOG: { WSADATA w; if(WSAStartup(0x0202,&w)) SendMessage(display,LB_ADDSTRING,n,(LPARAM)"-- Error in initializing WinSock."); else SendMessage(display,LB_ADDSTRING,n,(LPARAM)"-- Winsock initialized successfully."); n++; if(w.wVersion != 0x0202) { SendMessage(display,LB_ADDSTRING,n,(LPARAM)"-- Wrong version of Winsock."); WSACleanup(); } else SendMessage(display,LB_ADDSTRING,n,(LPARAM)"-- Right version of Winsock (2.2)"); n++; } break; case WM_CREATE: break; case WM_COMMAND: switch(LOWORD(wParam)) { case IDC_LISTEN: { SOCKET listener; UINT listenport; listenport = GetDlgItemInt(hwnd,IDC_SERVERPORT,NULL,false); listener = socket(AF_INET,SOCK_STREAM,0); if(listener == INVALID_SOCKET) { SendMessage(display,LB_ADDSTRING,n,(LPARAM)"-- Listening socket error."); WSACleanup(); } else SendMessage(display,LB_ADDSTRING,n,(LPARAM)"-- Listening socket created successfully"); n++; sockaddr_in serveraddr; serveraddr.sin_family = AF_INET; serveraddr.sin_port = htons(listenport); serveraddr.sin_addr.s_addr = htonl(INADDR_ANY); if(bind(listener,(LPSOCKADDR)&serveraddr,sizeof(serveraddr)) == SOCKET_ERROR) { SendMessage(display,LB_ADDSTRING,n,(LPARAM)"-- Error binding listening port."); WSACleanup(); } if(listen(listener,1) == SOCKET_ERROR) { SendMessage(display,LB_ADDSTRING,n,(LPARAM)"-- Error listening."); closesocket(listener); WSACleanup(); } else { SOCKET client; client = accept(listener,NULL,NULL); if(client == INVALID_SOCKET) { SendMessage(display,LB_ADDSTRING,n,(LPARAM)"-- Cannont accept connection."); closesocket(listener); WSACleanup(); } else { char *buffer; while(buffer != "---") { buffer = "---"; recv(client,buffer,sizeof(buffer),0); if(buffer != "---") { if(strlen(buffer) > 0) { SendMessage(display,LB_ADDSTRING,n,(LPARAM)buffer); n++; } else { closesocket(listener); SendMessage(display,LB_ADDSTRING,n,(LPARAM)"-- Connection closed"); WSACleanup(); } } } } } } break; } break; case WM_CLOSE: EndDialog(hwnd,0); break; case WM_DESTROY: break; default: return FALSE; } return TRUE; }



LinkBack URL
About LinkBacks


