IOCP에서 WSASend 사용 관련 및 시간 소요 요청 처리
먼저 좋은 강의 감사드립니다.
IOCP를 사용 시 채팅서버에서 수신의 경우는 WSARecv를 사용하였으나, 송신은 일반 send 함수를 사용하고 있습니다.
송신의 경우 WSASend를 사용하는 것이 send를 사용하는것 대비 장점이 없는 것인지요?
WSASend 사용 관련하여 해당 함수를 사용해야 하는 상황에 대해 설명 부탁드립니다.
추가로 IOCP의 thread (GQCS)에서 처리하는 일이 시간이 소요되는 처리를 해야 하는 시나리오 (파일 송신 등)에서, 사용자 수가 증가하는 경우 할당할 수 있는 thread가 없어, 동시 접속이 늘어나는 경우 문제가 발생할 수 있을 것으로 판단됩니다. 이런 경우 어떻게 설계를 하는 것이 타당한지 의견을 구하고자 합니다.
감사합니다.
답변 1
0
아니오, 그렇지 않습니다. WSASend()를 사용하는 것이 더 나을 수 있습니다. 다만 송신의 경우 동기모드로 처리하는 것이 프로그램 로직을 간소화 하는 경우가 많고 무엇보다 송신은 대부분 동기적으로 즉시 일어나는 것이 일반적이기 때문입니다. 하나의 방식으로 참고하시면 되겠습니다.
그리고 추가 질문 사항은 보통 스레드를 늘리는 것으로 1차 대응 할 수 있습니다. 문제는 '얼마나' 늘릴 것인가 입니다. 이런 부분에 대해서 정해진 답은 없습니다. 서버가 제공하는 서비스의 성격에 따라 천차만별입니다. 파일 송신도 느리지만 스트리밍의 경우는 더 느린 것이 일반적입니다. 따라서 서버뿐 아니라 클라이언트 구조까지 함께 고려해 생각해야 합니다.
다만 서버설계 관점에서 하나의 처리 단위 당 소요될 수 있는 시간을 고려하는 것은 중요하겠습니다. 파일을 송신하는 경우라 하더라도 대량의 파일을 한 번에 보내지는 않을 것입니다. 일정 단위로 잘라 송신하도록 구현하고 프로토콜을 설계 한다면 한 스레드가 파일 송신 때문에 장시간 반환하지 못하는 그런 일은 발생하지 않을 것입니다. 참고하시기 바랍니다.
recv, send 리턴값 질문
0
76
2
스타,워크와 같은 디스창 (Disconnected)도 비정상 종료에 대응하는 시스템으로 봐야할까요?
0
96
2
수업과 관련해서 읽어볼 만한 책 있나요?
0
111
1
서버가 끊어버리는것에 대한 질문
0
121
2
TCP 의도적 장애 테스트 질문
0
159
2
shutdown()을 호출하는 이유
0
164
1
프로토콜이 적용된 파일 송신 서버에서 send, recv 질문 있습니다!
0
152
2
"파일 송신 서버 제작" 강의 질문입니다!
0
151
2
대표적인 장애 유현 2
0
131
2
대표적인 TCP 장애 유현
0
160
2
이벤트 기반 파일 입출력과 callback 기반 파일 입출력이 네트워크에도 쓰이는 기법인가요?
0
120
2
개발환경 질문이 있습니다.
0
137
1
TCP/IP vs UDP , 멀티 스레드에서의 병목 현상에 대한 질문이 있습니다!
0
221
2
메모리 관련 문제로 질문드립니다.
0
187
2
테스트 환경 질문드립니다!
0
168
2
ThreadAcceptLoop 의 우아한(?) 종료에 대해 질문드립니다.
0
419
2
하트비트 시 서버에서의 연결 종료
0
451
2
강사님 질문 드립니다.
0
249
1
소켓 입/출력 설계 정리
0
450
1
멀티스레드 기반 서버 관련 질문..!
0
412
2
빅 엔디언과 리틀 엔디언
0
377
2
TIME_WAIT 관련 문의드립니다.
0
226
1
강사님 강의자료 인쇄용으로 부탁드립니다.
0
288
1
bind 함수 관련 궁금증
0
357
2





