소켓 또 질문올립니다.(될때까지 질문할수밖에... ;;; )

soylove의 이미지

전에도 질문을 올렸긴했지만 파일이 깨지는 바람에....
다시 질문을 올립니다.
첨부파일 soc1.c가 서버 역할
mid.c가 중간 매개역할
soc4.c가 클라이언트 역할을 합니다.

통신테스트만을 목적으로하여 소스는 보시면 간략하게 아실수 있을 것입니다.
처음에 soc1.c와 soc4.c를 곧바로 연결하여 데이터를 전송할때는 문제가 없이 잘 돌아가는것을 확인하고 중간매개 mid.c를 만들었는데 잘 전송이 되지 않습니다. soc4가 주기적으로 메세지를 보내면 mid.c에서도 받은 데이터를 찍어주고, soc1에 메세지를 send하도록 만들었습니다.

그런데 수행해보면 mid에서 처음 딱 한번만 soc4에서 메세지를 받고 데이터를 출력한후에는 아무 반응이 없습니다....
어디가 잘못됐는지도 잘 모르겠고...
전에 질문했을때 어느분이 SO_REUSEADDR을 써보라고 해서 사용해봤지만 달라짐을 느낄수가 없었습니다.

많은 조언 부탁드립니다.

File attachments: 
첨부파일 크기
Package icon 소스.zip2.28 KB
익명 사용자의 이미지

mid.c에서
fork()수행후 자식이 죽지 않고 다시 부모와 함께
for() 루프를 도는군요.
그리고 recv를 부모,자식이 경쟁적으로 하게 되있습니다.

그보다는
for() {
listen();
fork();
if (자식) {
recv();
print();
connect();
send();
exit(0);
else (부모) {
continue;
}
}
이런 방식 이 어떨까 합니다.

그리고 소스마다 보면
if (socket())
print(error);
if (bind())
printf(error);

이런 구조로 되있는데 그러면 처음 socket()에서 에러가 나도
bind()함수를 호출하게 되있습니다.

그리고 8byte를 보낸다고 받는 쪽에서도 버퍼를 8byte만
할당하는건 좋지않다고 생각합니다.
여유있게 4096정도 해주세요.
그리고 버퍼는 항상 쓰기 전에 초기화 해주시고요..

스페이스바가 먹지 않는군요.
게시판 쓰는 법을 잘 몰라서....

댓글 달기

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