udp server program 내의 htonl(INADDR_ANY) 에 대한 문의 ...

air74의 이미지

안녕하세요.

udp server 부분을 만들어 보고 있는데 질문이 있습니다.

1. 서버에서는 src addr 초기화 할때 반드시 SrcAddr.sin_addr.s_addr = htonl(INADDR_ANY); 이런 형태로 해주어야 하나요? 그냥 client 처럼 자기 src ip 로 설정을 해주면 안 되나요?

2. 서버쪽에선 recv 후 알게 되는 수신 socket 으로 sendto 하면 되기 때문에 따로 client socket 에 대한 초기화 및 기타 작업을 해줄 필요는 없을거 같은데 제가 생각 하는것이 올바른 가요?

3. udp socket 의 경우 여러 thread 가 하나의 socket 을 사용해도 문제 될것 없다고 생각 하는데 제대로 이해 하고 있는 것인지 궁금 합니다.

항상 고수님들의 답변에 감사하고 있습니다.

nthroot의 이미지

IP를 직접 설정하셔도 되는데 서버IP가 바뀔때마다
IP를 다시 입력해주고 컴파일 하거나...
아규먼트로 서버의 IP를 줘야하는 불편이 있겠네요.
랜카드가 1나 이상일 경우는 또 다르게 해줘야겠죠.
모든 IP로부터 동일 포트에 대해서 데이터를 받을건지..
아니면 하나의 IP를 지정해서 받을건지..

서버쪽에서 recv 후가 아니라 accept 후 일것 같구요.

udp뿐만 아니라 tcp도 여러 thread가 하나의 소켓을 사용해도 문제가 없습니다.
서버 규모가 조금 커지면 recv thread 와 send thread 를 따로 하는 구조를 많이 택합니다.

------식은이 처------
길이 끝나는 저기엔 아무 것도 없어요. 희망이고 나발이고 아무 것도 없어.

서지훈의 이미지

1. SrcAddr.sin_addr.s_addr = htonl(INADDR_ANY);
소켓을 만들 때 이렇게 해주셔야 어떤 주소에서 오든 받아 들이게 됩니다.
그렇지 않고 특정 주소를 사용하게 되면...
그 주소에선 온 접속만 받아들이게 됩니다.

2. 여기에 대한 질문은 질문의 의도가 좀 모호하군요.
서버쪽에서 receive 했다고 한다면...
클라이언트에서 접속하고 무언가를 보냈다는 것인데, 초기화가 필요한 이유가?
이미 모든 초기화 작업을 한 후에 접속이 된건데...

3. 네... 이때문에 멀티프로세스로 구성을 하는 것이니 만큼...
각 쓰레드는 동일한 소켓을 사용하게 해야합니다.

그럼... 좋은 하루 되시길...

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

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

댓글 달기

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