TCP/IP 통신은 송수신은 1Byte 전송하므로 UNICODE 를 사용한다면 MuliteByte문자와 UNICODE 상호 변환이 필요하다. MultiByteToWideChar(CP_ACP, 0, m_addr, -1, w_addr, 128); WideCharToMultiByte(CP_ACP, 0, w_buf, -1, m_buf, sizeof(szMsg) * 2, NULL, NULL); m_ 는 멀티바이트, w_ 는 유니코드 윈도우 소켓 모델은 Blocking, select, WSAAsyncSelect, WSAEventSelect, Overlapped, IOCP 있다. Blocking, select 는 단일스레드로 유닉스 호환되며 MS DOS 환경에서 사용된듯 하다. WSAAsyncSelect - 단일 스..
https://cafe.naver.com/winui3 https://www.youtube.com/watch?v=5tVUFdDV1js WinUI3 을 사용하기 위해 VisualStudio installer 에서 추가 설치가 필요하다. 아래 두번째 그림에서 C++를 사용한 데스크톱 개발 에서 Windows 앱 SDK C++ 템플릿을 추가해야 컴파일이 정상적으로 된다. 만약, 그렇지 않으면 세번째 그림처럼 나오지 않고 출력, 중간 디렉토리 정보가 안 나오는 경우가 생긴다. MFC 가 다른 언어에 비해 컨트롤의 발전이 없는 상태에서 WinUI 3.0 이 C++ 에서 사용이 가능하여 MFC도 큰 변화가 있을것 같았지만 아래 C++ 코드와 같이 기존 MFC와 전혀 다른 코드로 변한다. .Net Framework 출..
서버는 CSocket 을 상속받아 Listen 전용으로 클라이언트 연결만 담당한다. 이 소켓으로 클라이언트와 통신은 안된다. 사용자1 이 CSocket 을 상속받아 서버에 연결하면 서버에서 클라이언트와 통신하기 위해 CSocket 을 상속받은 클래스의 OnRecevie() 와 Send() 로 클라이언트1과 데이타를 주고 받는다. 사용자2 가 서버에 연결하면 서버는 CSocket 을 상속받은 클래스의 OnRecevie()와 Send() 로 클라이언트2와 데이타를 주고 받는다. 서버에서 클라이언트에게 일방적으로 보내고 수신하지 않으면 서버에서는 CSocket 을 상속받은 클래스 1개만 필요하지만, 송수신을 한다면 2개 필요하다. 클라이언트는 서버와 송수신을 히더라도 CSocket 을 상속받은 클래스 1개만 ..
WM_CTLCOLOR 주의사항 7행 주석처럼 if(GetDlgItem(IDC_STATIC_SERVER) == pWnd) 을 사용하면 안된다. 1 2 3 4 5 6 7 8 9 10 11 HBRUSH CDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) { HBRUSH hbr = CDialogEx::OnCtlColor(pDC, pWnd, nCtlColor); // TODO: 여기서 DC의 특성을 변경합니다. if (IDC_STATIC_SERVER == pWnd->GetDlgCtrlID()) // if(GetDlgItem(IDC_STATIC_SERVER) == pWnd) pDC->SetTextColor(RGB(255, 0, 0)); // TODO: 기본값이 적당하지..