책) TCP/IP 윈도우 소켓 프로그래밍 5장 TCP 서버 - 클라이언트 모델에서 데이터를 전송하는 방식은 다양한 방식이 있다. 1. 고정 길이 데이터 전송 2. 가변 길이 데이터 전송 3. 고정 + 가변 길이 데이터 전송 4. 송신자 데이터 전송후 접속 종료, 수신자는 recv()함수의 리턴값이 0이 될때까지 읽는다. While(1){ 소켓 수신 버퍼에서 1바이트 데이터를 읽는다. 읽은 데이터가 '\n'이 아니면 응용 프로그램 버퍼에 저장. 읽은 데이터가 '\n'이면 루프 빠져나옴. } 응용 프로그램 버퍼에 데이터를 사용한다. //DummyClient #pragma warning(disable:4996) #pragma comment(lib, "ws2_32.lib") #include #include #i..

책 ) 뇌를 자극하는 TCP/IP 소켓 프로그래밍 멀티 쓰레드 중에서 공유데이터를 Lock 하여 두개의 멀티쓰레드가 동시에 데이터에 접근하는 충돌을 방지하는 것을 구현하였습니다. 세마포어를 통해서 키를 생성하고 키를 획득한 쓰레드가 먼저 데이터에 접근하여 작업 후, 반환하게 되면 다음 쓰레드가 키를 얻어서 작업을 수행한다. #pragma warning(disable:4996) #include #include #include #define MAX_THREAD 2 HANDLE gsem; int count = 0; DWORD WINAPI myThread(void* arg) { int threadNum = *((int*)arg); int tmp; printf("Thread Num : %d\n", threadNu..
책 ) 뇌를 자극하는 TCP/IP 소켓 프로그래밍 TCP 와는 달리 Clinet 측에서는 Connect가 할 필요가 없고, Server쪽에서는 Listen, Accept를 할 필요가 없다. 왜냐하면 UDP는 데이터를 그냥 보내기 때문이다. #DummyClient(UDP) #pragma warning(disable:4996) #include #include #include #pragma comment(lib, "ws2_32.lib") #define PORT3600 #define IP"127.0.0.1" #define MAXLEN256 void HandleError(const char* cause) { int errCode = ::WSAGetLastError(); std::cout
게임 프로그래머가 되고 싶다는 막연한 생각을 가지고 프로카데미 게임개발 입문 개론을 들어봤습니다. 후회없는 선택이였고, 정말 많은 내용을 알 수 있었습니다. 제가 보고 들은 내용을 보시고 게임개발에 대해서 고민을 하고 계시는 분들에게 많은 도움이 되었으면 좋겠습니다. 질문은 언제나 환영입니다! 1. 게임 프로그래머의 종류 흔히 우리가 말하는 게임 프로그래머는 클라이언트 프로그래머를 말합니다. 클라이언트 프로그래머는 실제로 눈에 보이는 그래픽들이나 애니메이션, 행동, 퀘스트, UI등을 디자인하고 프로그래밍 합니다. 보통 클라이언트 프로그래머는 Unity나 Unreal이라는 게임엔진을 주로 사용하고, 펄어비스나 Colud Imperium Games와 같이 자회사의 게임엔진을 사용하는 회사 또한 존재합니다. ..
책 ) 뇌를 자극하는 TCP/IP 소켓 프로그래밍 코드는 두가지로 Server 코드와 Client 코드 두개로 나뉘어집니다. 책을 공부하면서 원래는 기본적인 Socket 통신은 알고 있었지만, 구조체를 통해서도 데이터를 전달할 수 있다는 것을 알게 되었습니다. 따라서 소켓 프로그래밍을 할때 어떤 방식으로 구조체 데이터를 넘기는지 확인하시면 될 것 같습니다. // DoummyClient #pragma warning(disable:4996) #include #include #include #pragma comment(lib, "ws2_32.lib") #define PORT3600 #define IP"127.0.0.1" void HandleError(const char* cause) { int errCode ..
책 ) 뇌를 자극하는 TCP/IP 소켓 프로그래밍 5장 파일과 소켓에 나오는 예제를 Window 식으로 바꿔보았습니다. 내용 자체는 간단해서 다른 설명을 추가하지는 않겠습니다. #pragma warning(disable:4996) #include #include #include #include #include //#include #define MAXLINE 512 int main() { FILE* source_fd; FILE* dest_fd; int readn; int totaln = 0; char buf[MAXLINE]; if (!(source_fd = fopen("test.txt", "r"))) { perror("Error : "); return 1; } if (!(dest_fd = fopen("co..
먼저 첫번째로 Position을 통한 파싱 방법이다. 아래의 코드를 보게 되면, Fpos, Lpos 두개의 변수를 선언하게 되는데, 각각 find_first_not_of, find_first_of 를 통해서 값을 받는다. size_t find_first_not_of(const char* s, size_t pos); -> str에서 s의 값이 아닌 첫 번째 위치 반환. size_t find_first(const char* s, size_t pos); -> str에서 s의 값이 존재하는 첫 번째 위치 반환. 이렇게 반환한 값을 토대로, substr을 하면서 값을 나눈다. #include #include #include void parse_to_position(const string& str, vector& ..
- Total
- Today
- Yesterday
- 고양이
- 더블버퍼링
- 워셜알고리즘
- 시스템보안
- 정보보안
- c++
- 인제대학교
- 학교
- 링크드 리스트
- Select모델
- 개발
- 알고리즘
- STL
- 자료구조
- 지뢰찾기
- 멀티쓰레드
- BFS
- Dreamhack
- queue
- 스레드풀
- 컨퍼런스
- 보안
- 야경
- 레지스터
- 드림핵
- 백준
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |