knight of elf - 애들은 잘놀아

문제에 오래. 많이. 빠지지 말고. 쉴것. 낭비가 많은 한국 - 과다 처리. 일회용.

IOCP 는 이렇게 하면 편하다. ★★★★★

댓글 6

그룹명/디버깅과 테스트

2014. 6. 27.



정리가 안됐지만. 정신이 없는 관계로. 그냥 올려 본다.

이 정도면 쓸만 하다.


IIOCP - Debug.zip



- 조금 접속되는 부분이 틀리다.

- 접속과 해지가 잘 된다. 친절하게 윈도우로 보여준다. ㅇ_ㅇ;;

- 전송은 잘되는지 모르겠다.

- 형식은 이게 맞다.

- 파일 복사에 IOCP 를 사용한 예제가 www.codeproject.com 에 있다.

- MapView 를 사용한 복사가 가장 빠르다. 하드가 날라갈지도 모른다.

- 정적 배열이 가장 빠르다. ATLMap 이 다음으로 빠르다. STLPort 가 다음을 빠르다. 나머진. 느리다.

- event + overlapped + 스레드풀 -> iocp dll -> CAsyncsocket -> 이런 순서로 개발되는거 같다.

- accept 자체는 1만개도 접속이 된다.

- 스레드는 3000개까지 생성이 가능하다.


http://blog.daum.net/knightofelf/1157


해보면 알거 같다.

test 아주 훌륭한 IOCP 스레드 풀 예제.zip


chat_server4 - 정적 메모리 & 지역변수 & completion & 전체 전송2.zip



그냥 편하게 CASyncSocket을 사용하는것도 좋아 보인다.

test CASyncSocket 완료.zip



이것 역시 좋다.

http://codenavy.egloos.com/viewer/4856077



MFC 디버그 DLL은 이것을 참고해 보자.

http://blog.naver.com/cjfgml6105/220014493533



윈도우 7의 경우.

로컬(오프라인)에서 ClientIOCP를 실행 시키면. 스레드가 순차적으로 서버에 접속하며 에코 메시지를 전송한다. 1000개 정도였던거 같다.

프로세스는 완료되서 사라졌는데. (핸들. 스레드. 프로세스 모두 종료)

네트워크 프로세스는 남아서. 이후 30초 동안. 보내기 받기를 처리한다.


- 윈도우 XP 에서는 볼 수 없었던 내용이다.

- 윈도우 XP 에서 socketclose() 는 굉장히 무겁고 느리다. 핸들이 소멸하지 않는 비슷한 현상이 있었다.

  그래서. 덮어쓰거나. 재사용하기도 하는데. 좋은 방법을 잊어먹었다. ㅡ_ㅡ;;

- ioctlsocket()으로 비동기로 만들고 소켓종료를 했었는데. 좋은 방법인지. 고민 된다.

- 윈도우 네트워크 서비스 때문인지도 모른다.

- CPU나 네트워크가 느려서. 버퍼이외에 공간에 있어서 그럴것 같다.

- VLC 에서도 이런 현상을 발견했다.

- 4KB 단위에 전송보다 크거나 작아야 할지도 모른다.


- 소켓은 프로세스와 다르게 움직일 수 있고. 소켓 ID만으로도 관리가 된다.

- 프로세스가 닫히면. 소켓도 닫힐것이다.

- 프로세스 이중화를 통한 소켓 관리도 가능해 보인다.


- 그래픽 카드나 RAMDISK. 레지스트리 등에 고속 쓰기 읽기를 사용하는 방법도 있을지 모른다.

- CPU 점유율이 100% 가 되면. 처리가 멈추게 되는 문제가 있다.

- WMI 등에 윈도우서비스를 활용해서. CPU 점유율을 80%까지 낮춘다면. 상황이 개선될 지도 모른다.


- 컴퓨터 좋은거 사용하는것이 좋다. ㅡ_ㅡ;;







사업자 정보 표시
| | | 사업자 등록번호 : -- | TEL : -- | 사이버몰의 이용약관 바로가기