C_C++ 프로그래밍
-
[IOCP] 채팅 서버 및 테스트 클라이언트 예제C_C++ 프로그래밍/IOCP 2019. 7. 10. 16:04
로재의 개발 일기 IOCP 채팅 예제 IOCP에 대해서 의도치 않은 삽질을 하다보니어느 정도 소스가 읽히고 (영어 실력도 늘어버린 것 같다..)그러면서 클라이언트도 IOCP 방식으로 구현을 하려고 했으나실패하였다. 결국에 스레드 2개를 호출하는 방식으로 바꾸게 되었고구글링을 하여 적당한 소스를 긁어 수정하여 구현하였다. 소스를 확인하면 알 수 있겠지만- mutex sock;- mutex push_lock;- mutex erase_lock; 총 3개의 뮤텍스를 설정하여 클라이언트가 무작위로 방문하더라도 생기는 데이터 공유의 문제를 해결하였다. 아직 부족한 부분이 많기 때문에 좀 더 수정해야 하는 소스이지만정상적으로 작동은 하기 때문에 올립니다. IOCP_Server.cpp1234567891011121314..
-
[IOCP] IOCP 서버 및 클라이언트 에코 예제C_C++ 프로그래밍/IOCP 2019. 7. 6. 14:43
로재의 개발 일기 개발 환경 OS Windows 10 컴파일러 VC++ 2017 IOCP Echo 예제 및 git에서 얻은 정보를 토대로 짜집기 하여직접 구현한 서버입니다. 현재 서버가 클라이언트에게 데이터를 받으면, 다른 클라이언트들에게도 데이터를 전송을 하는 부분은 구현은 되었지만... (vector 사용) 클라이언트가 봉쇄 통신을 하고 있기 때문에, 이 부분은 아직 미구현입니다. (대충 복붙하였습니다) (구현 하면 채팅이 가능하게 될 것으로 예상은 합니다.) ( 학습 및 테스트 용으로 구현하였으니, 테스트 혹은 학습 용도로 사용하시는 것을 추천드립니다.)퀄리티가 떨어져서.. 수정해야 하는 부분난잡한 논리 흐름 (비동기화를 적절히 사용한 흐름), 클라이언트 비동기화 구현 추후에는 상속 및 캡슐화를 해..
-
[C/C++] [MFC] TCHAR, wchar, char란 무엇인가??C_C++ 프로그래밍 2019. 6. 29. 17:15
로재의 개발 일기 IOCP를 github에서 예제를 보면서 공부를 하다가TCHAR나 _tmain _tprint _wchar_t 와 같은 부분에서 막혀저와 같은 분들이 있을까해서 포스팅을 합니당... (win32 공부해야 하나..) TCHAR? TCHAR를 설명하기 전에, 아스키 코드에 이어 멀티바이트와 유니코드에 대해서 설명할 필요가 있다. 1. 아스키 코드 (ASCII) 아스키 코드 값이라는 말을 프로그래밍을 하다보면 들어봤을 것이다. (비록 이제 시작했더라도) 이는 영어, 부호, 숫자등을 128개의 수로 나타내는 방법을 사용한다. 아스키코드는 1byte의 크기 (0000 0000~ 1111 1111)를 가지게 되지만, 이 ASCII CODE를 가지고는 한글이나 다른 언어를 표현할 수 없다. (한글은 ..
-
[ini이란?] ini 파일은 어떻게 사용하는가?C_C++ 프로그래밍 2019. 6. 26. 22:35
로재의 개발 일기 ini 파일이란? ini 파일은 보통 프로그램 정보를 저장하는 텍스트 문서를 말합니다.대체적으로 아래처럼 작성합니다. [SERVER1]SERVER_IP : 127.0.0.1SERVER_NAME : adminTCP_PORT = 3000UDP_PORT = 3100[SERVER2]SERVER_IP : 127.0.0.1SERVER_NAME : adminTCP_PORT = 3000UDP_PORT = 3100(편의상 두개의 section 내용은 같습니다.) 그리고 그것을 위해서 사용하는 함수가 몇 가지 있는데요. (무조건 ini 파일로 사용하는 것은 아닙니다.) GetPrivateProfileInt GetPrivateProfileString WritePrivateProfileString가 있습니다..
-
[Window Thread] 윈도우에서 쓰레드 간단한 예시C_C++ 프로그래밍 2019. 6. 25. 21:25
로재의 개발 일기 쓰레드 in 윈도우 윈도우에서 쓰레드를 사용하기 위해서는 리눅스와 다른 함수를 사용해야한다.자세한 내용은 MSDN에서 확인 가능. CreateThread() 1234567static HANDLE CreateThread( LPSECURITY_ATTRIBUTES lpsa, DWORD dwStackSize, LPTHREAD_START_ROUTINE pfnThreadProc, void* pvParam, DWORD dwCreationFlags, DWORD* pdwThreadId) throw();csThread를 생성하는 함수이다. ipsa : 새로운 thread의 보안 속성 dwStacksize : 새로운 thread의 stack pfnThreadProc : 새로운 thread의 프로시저 즉 함..
-
[QT] 메모장을 만들어보자 -2C_C++ 프로그래밍/QT 2019. 6. 23. 23:14
로재의 개발 일기 메모장 이전에는 [QT] 메모장을 만들어보자 -1 에서 UI를 작성하였습니다.이제 본격적으로 약간의 설명을 덧 붙인 뒤에 코드를 첨부하겠습니다. QString..? 123456QString i; // current file's numberQString total; // number of files to processQString fileName; // current file's name QString status = QString("Processing file %1 of %2: %3") .arg(i).arg(total).arg(fileName);cs QString은 QT에서 제공하는 String 라이브러리이며, QString의 인자는 99개까지 가능합니다.즉, 위의 코드에서 보다시피 %..
-
[QT] 메모장을 만들어 보자 -1C_C++ 프로그래밍/QT 2019. 6. 22. 20:57
로재의 개발 일기 메모장 QT에서 다음과 같이 생긴 메모장을 만들어 보도록 하겠습니다.메모장을 만들기 위해서 필요한 부분은 총 6가지 입니다.1. 파일의 리스트를 보여주는 부분 (QList Widget) 2. 파일의 내용을 작성하는 부분 (QText Edit) 3. Select Directory 파일 목록에서 파일을 고르는 버튼 (Select Directory) 4. 파일을 읽기 모드로 여는 버튼 (File Open)5. 파일을 저장하기 위한 버튼 (File Save) 6. 프로그램을 종료하는 버튼 (Exit) 우선 UI QT에서는 버튼들의 액션을 받아와야 하기 때문에 UI (user interface) 부터 만드는 것이 편리합니다. 이미 만들어진 프로그램을 보면 알 수 있지만 MainWindow창 안에..