메시지를 보낼때는 문자열의 크기를 알 수 있지만, 받을때는... 얼마를 넣어줘야할까요?
알려주세요...
보통 이렇게 하는걸로 알고 있습니다.
가변 데이터의 경우 정해진 프로토콜에 의해 그 크기를 먼저 보내고 데이터를 보내면 읽는 쪽에서 매우 편해지니까요.
안보내거나 보내기 힘든 경우는 받는쪽에서 수신 데이터를 버퍼링 해가면서 데이터의 끝을 판단하는 방법도 가능합니다.
저는 java로만 해봐서 c++로는 구체적으로 어떻게 해야 하는지는 정확히 모르겠네요.
-- Signature -- 青い空大好き。 蒼井ソラもっと好き。 파란 하늘 너무 좋아. 아오이 소라 더좋아.
recv(clnt_sock, &szMessage, sockBufSize, 0); 이렇게 하면 안되나요?
다른 글타래에도 답변을 달았습니다만, string은 모든 구현에서 연속된 메모리를 쓸 것을 표준에서 강제하지 않는 걸로 압니다. -- There's nothing so practical as a good theory. - Kurt Lewin
-- There's nothing so practical as a good theory. - Kurt Lewin "하스켈로 배우는 프로그래밍" http://pl.pusan.ac.kr/~haskell/
백터로는 잘 모르겠더라구요... 그래서
nRmsgSize = recv(clnt_sock, &szMsgBuf[0], 201, 0); 이렇게 했는데... 데이터는 저장이 되는데요... 문제가... 마지막에 널 문자를 넣어줘야할거 같은데... 어떻게 넣는지 잘 모르겠더라구요... ㅜㅜ 고수님들 알려주세요...
nRmsgSize = recv(clnt_sock, &szMsgBuf[0], 201, 0); szMsgBuf = szMsgBuf.c_str(); szMsgBuf.resize(nRmsgSize-1);
이런형태로 해결을 했는데요... 이해가 안가내요... ㅜㅜ
텍스트 포맷에 대한 자세한 정보
<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]
잘 모르겠습니다.
알려주세요...
보내는 쪽에서 크기를 보내주면 되지 않을까요?
보통 이렇게 하는걸로 알고 있습니다.
가변 데이터의 경우 정해진 프로토콜에 의해 그 크기를 먼저 보내고 데이터를 보내면 읽는 쪽에서 매우 편해지니까요.
안보내거나 보내기 힘든 경우는 받는쪽에서 수신 데이터를 버퍼링 해가면서 데이터의 끝을 판단하는 방법도 가능합니다.
저는 java로만 해봐서 c++로는 구체적으로 어떻게 해야 하는지는 정확히 모르겠네요.
-- Signature --
青い空大好き。
蒼井ソラもっと好き。
파란 하늘 너무 좋아.
아오이 소라 더좋아.
잘안되네요... ㅜㅜ
recv(clnt_sock, &szMessage, sockBufSize, 0); 이렇게 하면 안되나요?
C라이브러리에서 입력 버퍼 용도로는 vector<char>를 쓰세요
다른 글타래에도 답변을 달았습니다만, string은 모든 구현에서 연속된 메모리를 쓸 것을 표준에서 강제하지 않는 걸로 압니다.
--
There's nothing so practical as a good theory.
- Kurt Lewin
--
There's nothing so practical as a good theory. - Kurt Lewin
"하스켈로 배우는 프로그래밍" http://pl.pusan.ac.kr/~haskell/
vector로 하면... 입력하고 출력이 넘 힘들지 않을까요?
백터로는 잘 모르겠더라구요... 그래서
nRmsgSize = recv(clnt_sock, &szMsgBuf[0], 201, 0);
이렇게 했는데... 데이터는 저장이 되는데요...
문제가... 마지막에 널 문자를 넣어줘야할거 같은데...
어떻게 넣는지 잘 모르겠더라구요... ㅜㅜ
고수님들 알려주세요...
해결은 했는데요...
nRmsgSize = recv(clnt_sock, &szMsgBuf[0], 201, 0);
szMsgBuf = szMsgBuf.c_str();
szMsgBuf.resize(nRmsgSize-1);
이런형태로 해결을 했는데요... 이해가 안가내요... ㅜㅜ
댓글 달기