클라이언트에서 서버에게 데이터를 받을 때 데이터를 나누어서 받느냐 한번에 받느냐 문제를 말하는 듯 해서 답을 합니다.
우선 TCP/IP 통신을 하는 과정에서 데이터를 주고 받을때 가장 권장하는 데이터 크기는 MTU보다 작은 양입니다.
약 1500 바이트이지요...
그 크기에 맞춰서 데이터를 보내시면 될 듯 합니다.
그건 당연히 프로그래머가 해야할 일이구요...^^
/***************************************************
* 가장 심플한 것이 가장 아름다운 것이다.
***************************************************/
버퍼에서 가져오는건 맞습니다..하지만 recv할때 유저모드에서 커널모드로
버퍼에서 가져오는건 맞습니다..하지만 recv할때 유저모드에서 커널모드로 context switching을 하기때문에 오버헤드가 생깁니다..따라서 1바이트씩 가져와서 처리하는거보다 한꺼번에 가져와서 처리하는게 빠릅니다..
아, 제가 말하는 속도는인터넷 속도 엿습니다.그런데 서버에
아, 제가 말하는 속도는
인터넷 속도 엿습니다.
그런데 서버에게
100줄 부터
200줄 까지만 보내주세요
이런식으로 보내는 방법은 없나요???
RFC에서 찾아볼땐 없는거 같네요, (제가 못찾은건가요?)
그리고,,또,,인터넷 소스 가져오는것은 멀티 쓰레드를 사용해서 처
그리고,,또,,
인터넷 소스 가져오는것은 멀티 쓰레드를 사용해서 처리하는게 더 빠를까요?
[quote="likesylph"]버퍼에서 가져오는건 맞습니다..하지만
커널 모드로 내려가는것이 반드시 context switching를 유발한다고는
보이지 않습니다
왜냐면 예전에 테스트를 해보았습니다 -_-;
context switching는 페이지 폴트가 나면 나는것이지
recv함수를 호출한다고 발생되는건 아닌거 같더군요
단 커널 모드로 내려갈때는 오버헤드가 큰건 사실인거 같습니다
참고로 리눅스에서 테스트 해보았습니다
승자는 자기보다 우월한 사람을 보면 존경심을 갖고 그로부터 배울 점을 찾지만 패자는 자기보다 우월한 사람을 만나면 질투심을 갖고 어디 구멍난 곳이 없는지 찾는다.
- 하비스
lkjt님의 질문은 항상 생각하게 만드는군요. 조금 더 자세하게 상황과
lkjt님의 질문은 항상 생각하게 만드는군요. 조금 더 자세하게 상황과 의문점을 제시하시는 것이 좋은 답변을 유도하는 방법이라고 생각합니다.
서버에게 100줄부터 200줄까지 보내달라는건 네트웍쪽하고는 상관 없는
서버에게 100줄부터 200줄까지 보내달라는건 네트웍쪽하고는 상관 없는 서버에서 처리해줄 부분이니 처리하는 부분을 직접 만들어 주셔야죠 -_-a;;
Simple is best, all of the time...
저거 맞나...
질문의 답변이 맞는지 ... 질문이 좀 이해가 안가네요
클라이언트에서 서버에게 데이터를 받을 때 데이터를 나누어서 받느냐 한번에 받느냐 문제를 말하는 듯 해서 답을 합니다.
우선 TCP/IP 통신을 하는 과정에서 데이터를 주고 받을때 가장 권장하는 데이터 크기는 MTU보다 작은 양입니다.
약 1500 바이트이지요...
그 크기에 맞춰서 데이터를 보내시면 될 듯 합니다.
그건 당연히 프로그래머가 해야할 일이구요...^^
/***************************************************
* 가장 심플한 것이 가장 아름다운 것이다.
***************************************************/
댓글 달기