서버가 보낸 send 메시지가 클라이언트에서 수신이 안되는 문제

siba555의 이미지

안녕하세요.
제가 클라이언트에 있는 데이터가 필요해서 서버가 필요한 데이터를 요청 해서 받아 처리하는 서버를 개발중인데요
같은 부분에서 어느순간되면 서버에서는 정상적으로 send하고 send후 함수에서 리턴되는 전송 바이트도 정상인데 실제 클라이언트 디버깅해보면 메시지가 수신이 되지 않네요..
그리고 이상한게 데몬으로 만들어 백그라운드로 돌리면 발생을 하고 데몬으로 만들지 않고 실행하면 이문제가 발생하지 않고 정상적으로 동작합니다.

linux서버프로그래밍 어렵네요..ㅠㅠ
감사합니다.

익명 사용자의 이미지

udp?tcp?
sync?async?

siba555의 이미지

tcp sync방식인데 그러네요..

pchero의 이미지

클라이언트에서 수신이 안된다는 건 어떻게 확인하시나요?

어떤 에러 메시지가 발생하는지요?
그게 아니라면.. 이전 메시지 바이트 읽어들일때, 잘못된 사이즈를 읽어들여서 발생하는 문제일 수도 있습니다.

---------------------------------
제일 왼쪽이 저입니다 :)

익명 사용자의 이미지

wireshark로 진짜 패킷이 나갔는, 나갔으면 또 tcp ack를 받았는지 확인해보세요/

IsExist의 이미지

C/S 프로그램에서 받은 측은 항상 받기를 대기한 상태에서
보내는 측에서 보내기를 하도록 서로 구성해야 합니다.

보통은 아래의 과정을 거치는데, 다중 접속 처리에 따라 조금 다릅니다.
아래는 다중 접속 처리를 하지 않는 다는 가정에서 프로토콜을 구성해 봤습니다.

1. 서버 연결 대기
         2. 클라이언트 서버 연결 요청
3. 서버 클라이언트 연결 수신
         4. 클라이언트 서버 연결 수신
         5. 클라이언트 데이터 수신 대기
6. 서버 클라이언트에 데이터 요청 전송 후 수신 대기
         7. 클라이언트 서버의 요청 수신
         8. 클라이언트 서버의 요청 데이터 가공후 서버로 전송 후 수신 대기
9. 서버 클라이언트의 데이터 수신
10. 서버 클라이언트로 연결 종료 전송
         11. 클라이언트 종료 데이터 수신 후 소켓 닫기, 프로그램 종료
11. 서버 소켓 종료. 다른 연결 수신 대기

---------
간디가 말한 우리를 파괴시키는 7가지 요소

첫째, 노동 없는 부(富)/둘째, 양심 없는 쾌락
셋째, 인격 없는 지! 식/넷째, 윤리 없는 비지니스

이익추구를 위해서라면..

다섯째, 인성(人性)없는 과학
여섯째, 희생 없는 종교/일곱째, 신념 없는 정치

twinwings의 이미지

Quote: 같은 부분에서 어느순간되면 서버에서는 정상적으로 send하고 send후 함수에서 리턴되는 전송 바이트도 정상인데 실제 클라이언트 디버깅해보면 메시지가 수신이 되지 않네요..

sender쪽 문제가 없다고 가정하고,
리눅스 TCP/IP 기준으로 100Byte 리시브 요청해도 50Byte만 읽는 경우 있어요.
리시브 값 한번 확인해보시겠어요?

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.