TCP/IP 소켓프로그래밍 recv 관련질문좀..

hyun1023의 이미지

Quote:

-----------------------------------------------------------------------------
몬가왔음
u_recv_buf :
MSG cho_hyunho@hotmail.com [議고磁]%20以欌⑹좎좏?20漿援щ깅?
MIME-Version: 1.0
Content-Type: text/x-msmsgsinvite; charset=UTF-8

Application-Name: 漿
Application-GUID: {5D3E02AB-6190-11d3-BBBB-00C04F795683}
Invitation-Command: INVITE
Invitation-Cookie: 95410
Application-File: 弛蹂?- 煮?
Application-FileSize: 1358
Connectivity: N

-----------------------------------------------------------------------------

FILE RECV!!몬가왔음
u_recv_buf :
MSG cho_hyunho@hotmail.com [議고磁]%20以欌⑹좎좏?20漿援щ깅?
MIME-Version: 1.0
Content-Type: text/x-msmsgsinvite; charset=UTF-8

Application-Name: 漿
Application-GUID: {5D3E02AB-6190-11d3-BBBB-00C04F795683}
Invitation-Command: INVITE
Invitation-Cookie: 95411
Application-File: 弛蹂?- 煮?
Application-FileSize: 1358
Connectivity: N

------------------------------------------------------------------------------

FILE RECV!!몬가왔음
u_recv_buf :
MSG cho_hyunho@hotmail.com [議고磁]%20以欌⑹좎좏?20漿援щ깅?
MIME-Version: 1.0
Content-Type: text/x-msmsgsinvite; charset=UTF-8

Application-Name: 漿
Application-GUID: {5D3E02AB-6190-11d3-BBBB-00C04F795683}
Invitation-Command: INVITE
Invitation-Cookie: 95412
Application-File: 弛蹂?- 煮?
Application-FileSi

-----------------------------------------------------------------------------

FILE RECV!!몬가왔음
u_recv_buf :
MSG cho_hyunho@hotmail.com [議고磁]%20以欌⑹좎좏?20漿援щ깅?
MIME-Version: 1.0
Content-Type: text/x-msmsgsinvite; charset=UTF-8

Application-Name: 漿
Application-GUID: {5D3E02AB-6190-11d3-BBBB-00C04F795683}
Invitation-Command: INVITE
Invitation-Cookie: 95413
Application-File: 弛蹂?- 煮?
Application-FileSize: 1358
Connectivity: N

-----------------------------------------------------------------------------

FILE RECV!!몬가왔음
u_recv_buf :
MSG cho_hyunho@hotmail.com [議고磁]%20以欌⑹좎좏?20漿援щ깅?
MIME-Version: 1.0
Content-Type: text/x-msmsgsinvite; charset=UTF-8

Application-Name: 漿
Application-GUID: {5D3E02AB-6190-11d3-BBBB-00C04F795683}
Invitation-Command: INVITE
Invitation-Cookie: 95414
Application-File: 弛蹂?- 煮?
Application-FileSi

-----------------------------------------------------------------------------

프로그램중 콘솔메세지입니다.

저번에도 데이타짤림현상이라는 글로 올렸었는데

리시브 한번받는걸 "-------------" 로 경계해놨습니다.

첫번째 두번째 리시브 제대로받고 세번째에서 Application-FileSi

까지만 받았습니다. 만약 두번 나눠서 오는거라면 4번째 패킷에서 못받은 Si 이후부터 받아야됀다는 말인데 네번째패킷은 보통 정상으로 받습니다.. 그렇다면 어딘가에서 짤리긴한거같은데..

윈도우 MSN < - > 윈도우 MSN 끼리의 통신에선 문제가없었습니다..

제가 테스트하는게 윈도우MSN <-> 리눅스 MSN-bot 거든요..

리눅스 메신저와는 제대로 테스트못했습니다. 작업환경이 안돼서..

(ex 리눅스 가임 < - > 윈도우 MSN )

테스트방법은 윈도우쪽에서 아무파일이나 10개를 동시에 전송하여 상대측에서 패킷을 캡춰하는 방식입니다.

혹시 이기종간의 통신이라 문제가 있는지해서 질문드립니다.

이유를 정말 모르겠네요

서지훈의 이미지

원래는 문제가 없어야 하겠지만...
아무래도 이기종 간의 통신엔 변수가 많이 발생하게 마련이겠죠...

근데... 이게 이렇게 정기적으로 나는 에러라면 이기종간의 문제라기 보다는 프로그램 어딘가에 버그가 있는게 아닌가 생각을 합니다.

근데 이 받은 값은 그냥 소켓으로 들어온 값을 프린터 한것인지?
아님 tcpdump같은 것으로 덤프를 뜬건지요?

그리고, 소스 레벨에서 한거면 소스까지 공개를 해주시면 답을 찾기가 더 쉬울거 같군요.

<어떠한 역경에도 굴하지 않는 '하양 지훈'>

#include <com.h> <C2H5OH.h> <woman.h>
do { if (com) hacking(); if (money) drinking(); if (women) loving(); } while (1);

hanzo69의 이미지

recv 함수는 한번 호출로 모든걸 꺼내지 않습니다만..
그러므로 블러킹에 걸리거나(블러킹 소켓), EAGAIN을 반환할 때까지(넌블러킹 소켓) 계속 호출해줘야 합니다. 그리고 그것들을 붙여주셔야죠.

혹시 이렇게 코딩하지 않으셨는지요? non-blocking 소켓이라 가정하고..

i= 0;
while(1) {
   j = recv( buf + i );
   if( j <= 0 ) break; // 에러.. 혹은 EAGAIN
   // 이렇게 바로 0을 추가하신게 아니신지요? 그랬다면 중간에 0이 들어가서
   // 실제론 두번째 recv() 에서 받은 뒷부분이 안찍혔을 수 있습니다.
   buf[i+j] = 0;
   i += j;
}

님ㅎ 즐~

mach의 이미지

무슨 질문인지....질문이 더 어려운듯. :evil:

------------------ P.S. --------------
지식은 오픈해서 검증받아야 산지식이된다고 동네 아저씨가 그러더라.

익명 사용자의 이미지

서버의 내부망 사설아이피인경우 문제가 생기는 걸로 나름대로 결론내렸습니다. 외부에서 접속하신분들은 문제가 생기지않는걸로 보입니다.. 리눅스 마스커레이드로 연결해서쓰거든요.. 리눅스를 테스트서버로..

답변감사드립니다~~^^

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <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].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <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].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <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].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <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].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.