이것에 고무되 Connector에서도 open()시 Acceptor에게
메시지를
보내봤습니다.
각 open()시 메시지를 보낸 Connector의
ACE_Asynch_Write_Stream::
의 Write() 에서 '지정된 네트워크 이름을 더 이상
사용할 수 없습니다'
라는 메시지가 뜨구요.
메시지를 받는 Acceptor의 ACE_Asynch_Read_Stream::read()에서는
'겹친 I/O 작업이 진행중입니다라는 메시지가
뜨더군요.
바로 그냥 어깨가 추~~욱, 한 숨 푸~~~욱,
넉은 쑤~~욱, 마음을 꿀꿀
이건 어떤 경우에 발생하는 메시지인지...
여기에 다행인지 불행인지 반대로 Connector open()에서
보내는
코드를 Acceptor의 open()에 붙이고 Acceptor의 읽는 코드를
Connector에 붙이면 아무 이상 없이 메시지가 갑니다.
즉 ACE_Service_Handler::open()시
Acceptor에서 Connector로 보내는건 이상이 없는데
Connector에서 Acceptor로 보낼때는 이상이 발생한다.
ACE_Service_Handler::open()시면 이미 연결이 허용된 후라
Connector라고 메시지를 못 보낼 이유는 전혀 없는거
같은데...
예제소스에서도 open()시 서로 주거니 받거니
다정스런(?)
모습을 보이던데...
음.......................................
그럼 항상 행프하시길... ^_^
Proactor가 비동기 방식이기 때문에 읽기나 쓰기 명령시
완료가
되지 않은 상태에서 충분히 반환될 수 있죠.
하지만 제가 의아한것은 현재 1:1 연결에, 주고 받는
횟수 딱 1회,
주고 받는 데이터 양도 10여 바이트 밖에 안 되는데
Connector에서 전송시 왜 이렇게 자주 ERROR_IO_PENDING이
발생하는지 잘 모르겠습니다.
ERROR_IO_PENDING이 그렇게 흔한 경우인가요?
소켓 I/O를 계류시키는 요인들로는 어떤 것들이
있을까요?
그럼 항상 행프하시길... ^_^