https://docs.microsoft.com/ko-kr/windows/win32/api/iphlpapi/nf-iphlpapi-getadaptersaddresses?redirectedfrom=MSDN GetAdaptersAddresses function (iphlpapi.h) - Win32 apps Retrieves the addresses associated with the adapters on the local computer. docs.microsoft.com 추가> 프로그램 실행할때 인수를 전달해야 하는데 잘 작동안되어 아래 코드에서 46~57행을 주석처리하고 바로 안래에 family = AF_INET; 을 추가해서 실행함. 공유기에서 포트 속도를 100MBps 로 수동 설정하고 실행하면 100..
FTP Client, FTP 클라이언트, FTP 전송 MFC로 FTP 프로그램을 만들면 PutFile()와 같이 파일명만 지정하면 전송되므로 진행상태를 알 수 없다. 그래서 WIN32 API를 이용한다. 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 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98..
쓰레드는 윈도우(UI), 메시지큐, 스택만 소유한다. 프로세스는 4GB메모리공간, 파일, 메모리, 스레드 등의 객체를 소유하며, 프로세스가 종료될때 프로세스가 소유한 모든 자원은 OS에 의해 파괴된다. 프로세스는 최소한 한개 이상의 스레드를 가진다. 프로세스와 동시에 만들어지는 스레드를 주 스레드(Primary Thread)라 한다. 하나의 프로세스는 여러개의 스레드를 가질 수 있어 멀티스레드라고 한다. 객체간의 소유 관계 : 프로세스 > 스레드 > 윈도우 - 여기서는 스레드의 메시지큐를 살펴본다. 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 31 32 33 34 35 36 37 38 39 40 41 42..
쓰레드 동기화 주의점: 1. 쓰레드내에서 쓰레드 생성한 메인쓰레드의 변수를 참조할때는 직접 함수로 참조하지말고, 메시지로 해야한다. - 직접 참조 시 충돌 나는지 '가끔' 디버깅 에러 발생한다. 쓰레드에서 p메인쓰레드->Set변수(값) 혹은 p메인쓰레드->Get변수() 으로 변수 접근하지 말고 SendMessage(p메인쓰레드핸들, 사용자정의메시지, 값, 값) 으로 해야 했다. 2. 메인 쓰레드에서 받은 포인터안의 데이터(문자열 등)를 쓰레드 내에서 while 루프 등 시간이 걸리는 작업을 할때는 포인터 변수로 사용하지 않고 '힙' 이나 '배열' 등 고정 길이로 할당된 변수에 값을 저장해서 사용해야 데이터가 깨지지 않는다. 한 순간에 메모리(임계영역)의 접근을 하나의 쓰레드에서만 접근할 수 있게 제어한다..