IOCP Key값 문의

익명 사용자의 이미지

IOCP를 create함수로 생성할때 NULL로 생성하고
그다음 create함수에 매개변수로 IOCP핸들값을 넘겨줄때
Key값을 어떤식으로 활용하는지 궁금합니다.

패킷용으로 선언한 구조체 데이터스트림을 넘기는건지
여튼 어떻게 사용하는건지 궁금합니다.

설명에는 연결된 소켓을 구분짓는다고 하는데 정확히 그 의미가 뭔지도 궁금합니다.

shint의 이미지

http://blog.daum.net/_blog/photoImage.do?blogid=0iioV&imgurl=http://cfile206.uf.daum.net/original/22204F4B543934EA33A5CA

다운이 안되면. 한번 더 갱신하면. 다운 될거예요.

1. 이거 다운받고.
chat_server4 - 정적 메모리 & 지역변수 & completion & 전체 전송2.zip
http://cfile234.uf.daum.net/attach/22546F3353AD028B15E3AE

2. 이거 다운받고. 서버 실행파일과 같은 폴더 넣고.
MFC-디버깅용-DLL파일들
http://luciferd.tistory.com/entry/MFC-%EB%94%94%EB%B2%84%EA%B9%85%EC%9A%A9-DLL%ED%8C%8C%EC%9D%BC%EB%93%A4

3. 이거 서버 실행하고
chat_server4 - 정적 메모리 & 지역변수 & completion & 전체 전송2\Debug\chat_server.exe

4. 이거 클라이언트 실행.
ClientIOCP.exe 192.168.0.63 5001

//--------------------------------------
//아래는 그냥 참고용. ㅇ_ㅇ;;
//--------------------------------------

test 아주 훌륭한 IOCP 스레드 풀 예제.zip
http://cfile238.uf.daum.net/attach/274C333353AD028B235602

chat_server4 - 정적 메모리 & 지역변수 & completion & 전체 전송2.zip
http://cfile234.uf.daum.net/attach/22546F3353AD028B15E3AE

test CASyncSocket 완료.zip
http://cfile202.uf.daum.net/attach/2164D44253AD317E13E66E

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

MFC 디버그 DLL은 이것을 참고해 보자.
http://blog.naver.com/cjfgml6105/220014493533

Win32 IOCP를 따라잡을 Unix, Linux, *BSD계열의 방법은?

https://kldp.org/node/60222

IOCP 서버 제작에 있어서의 유의할 점들
http://egloos.zum.com/sophnim/v/874820

test IOCP 완료포트 예제소스 정리 ★★★★★
http://blog.naver.com/dks444?Redirect=Log&logNo=90194527280

test IOCP 완료포트 예제소스 정리.zip
http://cfile201.uf.daum.net/attach/236CDE3E563C499E15B94A

비동기 파일 사용
요건 좀 느린거
http://www.codeproject.com/Articles/174595/A-Simple-Wrapper-for-Asynchronous-File-I-O-ReadFil
요건 좀 안정적인거
http://www.codeproject.com/Articles/3936/CFile-Replacement-with-Overlapped-I-O-and-User-Def

비동기 소켓 사용
WSARecv
http://msdn.microsoft.com/en-us/library/windows/desktop/ms741688(v=vs.85).aspx
WSASend
http://msdn.microsoft.com/en-us/library/windows/desktop/ms742203(v=vs.85).aspx

IOCP가 최고라는 수다 ㅡ_ㅡ;; PC 한대에. 10000 대가 접속이 가능하다고 한다.
https://kldp.org/node/60222

//구글에서 검색하면 나오는 자료. 데브피아에 더 많은거다. www.devpia.com
http://www.joinc.co.kr/modules/moniwiki/wiki.php/Site/win_network_prog/doc/iocp
http://www.viper.pe.kr/wiki2/wiki.php/Overlapped%20I/O%20%BF%CD%20IOCP%20Programming
http://www.joinc.co.kr/modules/moniwiki/wiki.php/Site/win_network_prog/doc/iocp
http://codeflow.co.kr/question/180/epoll%EA%B3%BC-iocp%EC%9D%98-%EC%84%B1%EB%8A%A5%EC%97%90-%EC%B0%A8%EC%9D%B4%EB%8A%94-%EC%96%B4%EB%94%94%EC%84%9C-%EC%98%A4%EB%8A%94%EA%B1%B8%EA%B9%8C%EC%9A%94/
http://www.gamecodi.com/board/zboard-id-GAMECODI_Talkdev-no-1607-z-11.htm
http://blog.83rpm.com/archives/912
http://ryulib.tistory.com/295

http://search.naver.com/search.naver?ie=utf8&sm=stp_hty&where=se&query=sigaction

이 책이 원본이다.
UNIX Systems Programming for SVR4
유닉스 시스템 프로그래밍 SVR4
O'REILLY 한빛 미디어
http://www.hanb.co.kr/book/look.html?isbn=89-7914-120-3
http://book.naver.com/bookdb/book_detail.nhn?bid=53431

test 아주 훌륭한 IOCP 스레드 풀 예제.zip
http://cfile238.uf.daum.net/attach/274C333353AD028B235602

chat_server4 - 정적 메모리 & 지역변수 & completion & 전체 전송2.zip
http://cfile234.uf.daum.net/attach/22546F3353AD028B15E3AE

test CASyncSocket 완료.zip
http://cfile202.uf.daum.net/attach/2164D44253AD317E13E66E

MFC 디버그 DLL은 이것을 참고해 보자.
http://blog.naver.com/cjfgml6105/220014493533

MFC-디버깅용-DLL파일들
http://luciferd.tistory.com/entry/MFC-%EB%94%94%EB%B2%84%EA%B9%85%EC%9A%A9-DLL%ED%8C%8C%EC%9D%BC%EB%93%A4

-------------------------------------------
A Simple Wrapper for Asynchronous File I/O (ReadFileEx, WriteFileEx) ★★★★★ 가장 훌륭한 FILE IOCP 예제소스
A Simple Wrapper for Asynchronous File I/O (ReadFileEx, WriteFileEx)
http://www.codeproject.com/Articles/174595/A-Simple-Wrapper-for-Asynchronous-File-I-O-ReadFil

CFile Replacement with Overlapped I/O and User-Defined Progress Callback
http://www.codeproject.com/Articles/3936/CFile-Replacement-with-Overlapped-I-O-and-User-Def

RIO - Windows Registered I/O (RIO) vs IOCP ★★★★★
https://msdn.microsoft.com/en-us/library/windows/desktop/ms740642(v=vs.85).aspx

RIOReceive function
https://msdn.microsoft.com/en-us/library/windows/desktop/hh437193(v=vs.85).aspx

Windows Registered I/O (RIO) vs IOCP
https://www.slideshare.net/sm9kr/windows-registered-io-rio

New techniques to develop low-latency network apps
https://channel9.msdn.com/Events/Build/BUILD2011/SAC-593T

http://jacking.tistory.com/1177

Windows 8 Registered I/O - Multi threaded RIO IOCP UDP Example Server
http://www.serverframework.com/asynchronousevents/2012/03/windows-8-registered-io---multi-threaded-rio-iocp-udp-example-server.html

New techniques to develop low-latency network apps
https://channel9.msdn.com/Events/Build/BUILD2011/SAC-593T

Windows Registered I/O (RIO) vs IOCP
https://www.slideshare.net/sm9kr/windows-registered-io-rio

Windows Registered I/O Win 8.1 RioCreateRequestQueue Error 10045
https://stackoverflow.com/questions/25788382/windows-registered-i-o-win-8-1-riocreaterequestqueue-error-10045

Windows 8と2012 ServerのRegistered I/Oについての記事Add Star
http://d.hatena.ne.jp/matarillo/20150920/p1

zeliard/RIOEchoServer
Echo Server using Windows Registered I/O
https://github.com/zeliard/RIOEchoServer

zeliard/RIOTcpServer
High Performance TCP server example using Windows Registered I/O (RIO)
https://github.com/zeliard/RIOTcpServer

-------------------------------------------

CFile Replacement with Overlapped I/O and User-Defined Progress Callback
https://www.codeproject.com/Articles/3936/CFile-Replacement-with-Overlapped-I-O-and-User-Def

IOCP
http://blog.naver.com/dks444/90194527280
http://cfile201.uf.daum.net/attach/236CDE3E563C499E15B94A

Win32 IOCP를 따라잡을 Unix, Linux, *BSD계열의 방법은?
https://kldp.org/node/60222

Server - AsyncSelect Model
http://egloos.zum.com/codenavy/v/4856077
기능과 원리로 배우는 프로그램\통신\select - IO멀티 플렉싱 소스2
https://drive.google.com/drive/folders/0B_788O9A9oekR1NzVWZ0b0p4YTg?usp=sharing

-------------------------------------------

멀티스레드 socket connect 10048 에러 발생
https://kldp.org/node/157796

----------------------------------------------------------------------------
젊음'은 모든것을 가능하게 만든다.

매일 1억명이 사용하는 프로그램을 함께 만들어보고 싶습니다.
정규 근로 시간을 지키는. 야근 없는 회사와 거래합니다.

각 분야별. 좋은 책'이나 사이트' 블로그' 링크 소개 받습니다. shintx@naver.com

익명 사용자의 이미지

아랫분은 바로 핵심을 짚어 주셨는데, 링크를 늘어만 놓는 건 여전하시네요 :(

jic5760의 이미지

서버에서는 각각의 클라이언트 모두를 따로 관리해야합니다.
(커넥션 죽은 클라이언트 처리, 로그인(세션)처리, 등등의 작업을 하겠죠.)
그럴러면 각각의 클라이언트에 대한 구조체같은걸 생성하겠죠.

struct ... {
SOCKET hSocket;
WSABUF buffer;
int state;
sessionId;
등등...
};

보통 이런식으로 클라이언트 소켓 구조체를 만들어서 IOCP Key에는 이 구조체의 포인터를 넘겨서 사용합니다.

GetQueuedCompletionStatus 에서 다시 IOCP Key(위 구조체의 포인터)를 받아서 각각의 클라이언트에 대한 처리를 합니다.

익명 사용자의 이미지

감사합니다. 이제 확인했네요. 말씀하신 부분 잘 새겨 들었습니다.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.