소켓 UDP 통신 질문 하나 올리겠습니다

tlling의 이미지


소켓 통신 UDP 를 통하여 데이터가 전송되는 것은 확인하였습니다

그래서 자동으로 클라이언트에서 서버로 데이터를 전송하기 위해 nohup 명령으로 백그라운드로 실행을 시켰습니다

클라이언트는 크론 명령으로 전송을 주기적으로 하였습니다

근데 확인을 해보니 한번만 받고 서버측에서 백그라운드 명령이 종료가 되었습니다. 바인드가 종료된거 같습니다

sock = socket(AF_INET, SOCK_DGRAM, 0); //소켓함수 호출
if (sock == -1)
{
printf("Socket Error!");
return -1;
}

sockaddr_in serveraddr;

memset(&serveraddr, 0, sizeof(serveraddr));
serveraddr.sin_family = AF_INET;
serveraddr.sin_addr.s_addr = htonl(INADDR_ANY);
serveraddr.sin_port = htons(9000);

retval = bind(sock, (sockaddr *) &serveraddr, sizeof(serveraddr));
if (retval == -1)
{
printf("Bind Error!");
return -1;
}

sockaddr_in clientaddr;
int addrlen = sizeof(clientaddr);
memset(&clientaddr, 0, sizeof(clientaddr));

retval = recvfrom(sock, (char*)&test, sizeof(test), 0, (sockaddr *)&clientaddr, (socklen_t*)&addrlen);

if(retval == -1)
{
printf("Recv Error");
return -1;
}

위의 내용 처럼 간단하게 저렇게만 해두었습니다.. 한번만 받고 계속 서버측에서 백그라운드 명령이 종료가 됩니다..

어떻게 해결해야할지 몰라 이렇게 질문올립니다

rookey94의 이미지

서버코드가 한번만 수행하고 프로그램이 종료처리를 하신거 아닌가요?

위 코드만 보자면 서버는 한번 읽고 프로그램 종료처리가 되는거 같은 느낌이~~~

tlling의 이미지

안되게 할수 있을까요?ㅠ

rookey94의 이미지

고민하시는게 이 부분이 맞을런지
(답글에 close(sock)을 적으신걸 봐서. 어플 종료를 고민하시는건지 갑자기 의문이 들어서 ^^)
loop를 추가하시면 서버가 종료되는 현상은 없을겁니다.
게시판내에서 참고하실 글들이 기재되어 있습니다.
(http://kldp.org/node/39193)

while(1) /* server infinite loop */
{
sockaddr_in clientaddr;
int addrlen = sizeof(clientaddr);
memset(&clientaddr, 0, sizeof(clientaddr));

memset(&test, 0x00, sizeof(test));
retval = recvfrom(sock, (char*)&test, sizeof(test), 0, (sockaddr *)&clientaddr, (socklen_t*)&addrlen);

if(retval == -1)
{
printf("Recv Error");
continue;
}

TEST 메시지에 대한 처리....
}/* end of server infinite loop */

댓글 달기

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