Anyone have any ideas?
here is my code:
I commented where I get the error in "bool Connect(...)"
"
#include "deskconnect.h"int CALLBACK WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow){ MSG msg; WNDCLASSEX cmain; cmain.cbSize = sizeof(WNDCLASSEX); cmain.style = CS_HREDRAW | CS_VREDRAW; cmain.lpfnWndProc = MainProc; cmain.cbClsExtra = 0; cmain.cbWndExtra = 0; cmain.hIcon = LoadIcon(NULL, IDI_APPLICATION); cmain.hCursor = LoadCursor(NULL, IDC_ARROW); cmain.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH); cmain.lpszMenuName = NULL; cmain.lpszClassName = L"deskConnect"; cmain.hInstance = hInstance; cmain.hIconSm = LoadIcon(NULL, IDI_APPLICATION); RegisterClassEx(&cmain); mWnd = CreateWindow(L"deskConnect", L"Desk Connect", WS_OVERLAPPEDWINDOW, 300, 300, 512, 384, NULL, NULL, hInstance, NULL); CreateWindow(L"button", L"Listen", WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, 5, 5, 80, 25, mWnd, (HMENU)BTN_LISTEN, hInstance, NULL); CreateWindow(L"button", L"Connect", WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, 85, 5, 80, 25, mWnd, (HMENU)BTN_CONNECT, hInstance, NULL); CreateWindow(L"button", L"Send", WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, 165, 5, 80, 25, mWnd, (HMENU)BTN_SEND, hInstance, NULL); CreateWindow(L"button", L"Screenshot", WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, 245, 5, 80, 25, mWnd, (HMENU)BTN_SCREENSHOT, hInstance, NULL); if(!mWnd) return 0; ShowWindow(mWnd, SW_SHOWNORMAL); UpdateWindow(mWnd); if(!WSAInit()) { MessageBox(mWnd, L"Couldn't initialize winsock", L"Socket error", MB_OK | MB_ICONERROR); return 0; } while(GetMessage(&msg, NULL, 0, 0)) { TranslateMessage(&msg); DispatchMessage(&msg); } return msg.wParam;}LRESULT CALLBACK MainProc(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam){ switch(Msg) { case SOCKET_MESSAGE: switch (WSAGETSELECTEVENT(lParam)) //If so, which one is it? { case FD_ACCEPT: //Connection request was made memset(&userAddr, 0, sizeof(SOCKADDR)); tmpSocket = accept(mSocket, (LPSOCKADDR)&userAddr, &sizeAddr); //CloseSocket(mSocket); mSocket = tmpSocket; break; case FD_CONNECT: //MessageBox(hWnd, L"Connection successful!", L"status", MB_OK); //Connection was made successfully break; case FD_READ: //Incoming data; get ready to receive memset(buffer, 0, sizeof(buffer)); recv(mSocket, buffer, sizeof(buffer)-1, 0); MessageBoxA(hWnd, buffer, "status", MB_OK); break; case FD_CLOSE: CloseSocket(mSocket); //Lost the connection MessageBox(hWnd, L"Connection lost!", L"status", MB_OK); break; } break; case WM_COMMAND: switch(LOWORD(wParam)) { case BTN_LISTEN: CloseSocket(mSocket); mSocket = CreateTCPSocket(hWnd); Listen(mSocket, 21234); break; case BTN_CONNECT: CloseSocket(mSocket); mSocket = CreateTCPSocket(hWnd); Connect(mSocket, "127.0.0.1", 21234); break; case BTN_SEND: if(mSocket) send(mSocket, "Hello World!", 12, 0); break; case BTN_SCREENSHOT: //BitBlt(GetWindowDC(hWnd),0,0,300,300,GetWindowDC(GetDesktopWindow()),0,0,SRCCOPY); GetScreenBits(); break; } break; case WM_DESTROY: CloseSocket(mSocket); WSACleanup(); PostQuitMessage(WM_QUIT); break; default: return DefWindowProc(hWnd, Msg, wParam, lParam); } return true;}bool WSAInit(){ WSADATA wsadata; if(WSAStartup(SCK_VERSION2, &wsadata) != 0) //0 = success { return false; } if(wsadata.wVersion != SCK_VERSION2) { WSACleanup(); return false; } return true;}SOCKET CreateTCPSocket(HWND hWindow){ if(mSocket) { EMSG("Socket already opened"); return 0; } SOCKET sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); if(sock == INVALID_SOCKET) { EMSG("Couldn't create socket."); return 0; } if(WSAAsyncSelect(sock, hWindow, SOCKET_MESSAGE, FD_ACCEPT | FD_CONNECT | FD_READ | FD_CLOSE) == SOCKET_ERROR) { EMSG("Failed to select window"); return 0; } return sock;}bool Connect(SOCKET sock, char *IPAddress, unsigned int port){ SOCKADDR_IN addr; addr.sin_family = AF_INET; addr.sin_port = htons(port); addr.sin_addr.S_un.S_addr = inet_addr(IPAddress); int error = connect(sock, (LPSOCKADDR)&addr, sizeof(addr)); //CONNECT RETURNS ERROR, BUT WORKS ANYWAYS if(error != 0) { EMSG("Connection failed!"); iMSG32(WSAGetLastError()); //ALSO, THIS RETURNS O =( return false; } return true;}bool Listen(SOCKET sock, unsigned int port){ SOCKADDR_IN addr; addr.sin_family = AF_INET; addr.sin_port = htons(port); addr.sin_addr.S_un.S_addr = htonl(INADDR_ANY); if(bind(sock, (LPSOCKADDR)&addr, sizeof(addr)) == SOCKET_ERROR) { EMSG("could not bind socket"); return false; } if(listen(sock, SOMAXCONN) == SOCKET_ERROR) { EMSG("could not listen"); return false; } return true;}void CloseSocket(SOCKET sock){ if(sock) closesocket(sock);}BYTE *GetScreenBits(){ RECT wRect; HWND hDesktop = GetDesktopWindow(); GetWindowRect(hDesktop, &wRect); BITMAPINFO bmi; memset(&bmi, 0, sizeof(BITMAPINFO)); bmi.bmiHeader.biSize = sizeof(BITMAPINFOHEADER); bmi.bmiHeader.biWidth = wRect.right; bmi.bmiHeader.biHeight = wRect.bottom; bmi.bmiHeader.biPlanes = 1; bmi.bmiHeader.biBitCount = 8; bmi.bmiHeader.biCompression = BI_RGB; BYTE *pixels; HDC hdcScreen = GetWindowDC(hDesktop); HDC hDC = CreateCompatibleDC(hdcScreen); HBITMAP bmSource = CreateDIBSection(hDC, &bmi, DIB_RGB_COLORS, (void**)&pixels, NULL, NULL); SelectObject(hDC, bmSource); BitBlt(hDC, 0, 0, wRect.right, wRect.bottom, hdcScreen, 0, 0, SRCCOPY); BitBlt(GetWindowDC(mWnd), 0, 0, 400, 400, hDC, 0, 0, SRCCOPY); DeleteObject(bmSource); DeleteDC(hDC); ReleaseDC(hDesktop, hdcScreen); return pixels;}