글
환경 : Visual Studio 6.0 (간단한 코딩환경을 위해)
와 미치는줄알았다..
Nagle optVal이 -858993664값이 나온다..
일단 Nagle 알고리즘을 간단히 설명하면
(위키 : http://en.wikipedia.org/wiki/Nagle's_algorithm)
send ( "a" ); send ( "b" ); send ( "c" ); send ( "d" ); send ( "e" ); 이렇게 전송을하면 1. buffer [ a , ] //a가 버퍼에 쌓임 2. 데이터send중이 아님 => buffer를 send함 3. 보내는동안 buffer에 나머지 데이터가 쌓임 buffer [ b, c, d, e, ] 4. buffer가 보내짐 결과를 보면 send ("a"); send ("bcde"); 이런식으로 보내지게된다. |
왜 문제가 생겼냐면,
받는쪽에서 NULL 문자를 기준으로 출력했을때
a bc d e 이런 결과값이 출력되어야 하지만 |
a bcde 이렇게 출력된다 |
쒯..
알겠는가? 문제점을?
(Nagle + TCP특성(stream))
어찌어찌하여 Nagle을 찾게되었고
MSDN에서 보니
int optVal; int optLen = sizeof(int); if (getsockopt(ListenSocket, SOL_SOCKET, SO_ACCEPTCONN, (char*)&optVal, &optLen) != SOCKET_ERROR) printf("SockOpt Value: %ld\n", optVal); |
뭐가 문제인지.. optVal 값은 Option 값이므로 TRUE, FALSE 가 나와야한다
하지만 미친 -858993664 이런 값이나오니...
인터넷 검색해도 이 코드고, 열혈강의도 이런 코드였다.
뭐가문제냐.... 해서 30분동안 헤메다가
찾아낸 Nagle알고리즘 설정방법은 바로 요것
1. char형으로 처음부터 선언하는것
2.(char)optVal 로 형변환을 하여 출력
optVal... 네이년..
char라고 왜 말을못해!!
이렇게 쉬운 실수를 하다니..ㅠㅠ
int인척 둔갑하지마라
'프로그래밍 > Network' 카테고리의 다른 글
error LNK2019: unresolved external symbol __imp__socket@12 (0) | 2013.03.11 |
---|---|
PF_INET , AF_INET (0) | 2013.03.06 |
[WINAPI] Local IP 얻어오기 (0) | 2013.03.05 |
RECENT COMMENT