좀 복잡한 소켓통신

soylove의 이미지

(305)A(303)-(303)B(304)-(304)C(305)가 서로 연결되어 있습니다. C와 A도 연결되어있습니다.

A에서 주기적으로 요청을 보내면 B에서 값을 비교해서 C로 넘기고 C에서 비교한 결과를 A에게 전달하는... 나름대로 필요성이 있어서 프로그램을 짰습니다.
주기적으로 시행하려고 실행후 sleep()을 쓰고 sleep이 끝나면 무한 for()문을 돌립니다

A에서 가장 먼저 시작을 하겠죠?
먼저 A에서 실행시키면 우선 B,C로 전달이 잘 됩니다. 실행후 sleep이 끝나기 전에 A를 종료시켰다가 다시 수행하면 socket끼리의 통신은 잘 이루어 집니다.
그런데 A에서 sleep()이 끝나기를 기다렸다가 재전송하기를 바랬는데 이때부터는 bind에러가 납니다. 연결이 제대로 안됐다는건데요...;;;

어떻게 바꿔야 할지 난감합니다.
제가 프로그램이 워낙에 허접이다보니.. 제 의도와는 다른 프로그램을구현해 버린건지...
위의 알파벳 양옆의 번호는 서로 통신하는 포트번호입니다.
A-B는 303으로, B-C는 304로 , C-A는 305로 말이죠...

소스는 첨부파일로 만듭니다... 제발좀 도와주세요...
일일이 고쳐줘서 해결될 문제가 아니라면
어떤부분에서 포트를 열어야 되고 어디서 닫아야 하고.. 그런 설명을 좀 해주시면 감사하겠습니다.....

File attachments: 
첨부파일 크기
Package icon 통신.zip3.1 KB
mangg의 이미지

bind 에러라는 말은 계속 소켓을 열지 않고 닫았다가 다시 생성하는
방법인가 보죠???

우선 A,B,C는 서버도 되고 동시에 클라이언트도 된다는 말이네요??
1. A는 B로 접속한다.
2. A는 B에게 데이터를 보낸다.
3. B는 보낸 데이터를 비교한다.
4. B는 C로 접속한다.
5. B는 비교 결과를 C로 보낸다.
6. C는 A로 접속한다.
7. C는 A로 비교 결과를 보낸다.
8. A는 잠시 Sleep한다.
9. 1번으로 이동한다(?)

여기서 소켓 접속이 항시 접속해 있는 상태입니까?? 요청만 끝내고 닫습니까?

우선 A,B,C 프로그램들이 종료하지 않는다면 계속 접속을 유지 시키는게 좋을듯 싶습니다.

첨부한 소스 파일이 깨졌어요.

-------------------
나는 Copy&Paster 이다. 나의 화려한 기술 조합에 모두들 나를 두려워 한다. 나도 코드 Maker 이고 싶다.

최종호의 이미지

올리신 소스는 안 보았고, 단순히 bind 의 문제라면
SO_REUSEADDR 옵션을 찾아보세요.
kldp 에 많이 올라와 있습니다.

soylove의 이미지

첨부파일 다시 올렸습니다.
답변주시고 다운받아보려고 해주셔서 감사합니다.
소켓옵션도 찾아보도록 하겠습니다^^;

댓글 달기

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