점백이삼형제구하기

jjjjrr의 이미지

미안합니다
또질문입니다

        client_sockfd = accept(server_sockfd, (struct sockaddr *)&clientaddr,
                               &client_len);
        pid = fork();
        if (pid == 0) 
        {

            if (read(client_sockfd, buf, 255) <= 0)  
            {
                write(client_sockfd, "bye bye\n", 255);
                close(client_sockfd);
                exit(0);
 
             }
             
    inet_ntop(AF_INET, (void *)&clientaddr.sin_addr,peeraddr,sizeof(peeraddr));
         printf("%s",peeraddr);
             sprintf(query, "./bindset %s %s", buf,peeraddr);
   printf("query=%s     \n",query);  

위코드를 실행시키면
220.76.242.48query=./bindset vvv.da77.com.inux 220.76.242.48
위의결과가 나옵니다
근데여
linux 라는글자는 왜붙여져 나오나요
그것때문에 프로그램이 이상하게 동작합니다
처음 peeraddr의 값은 잘나오는데
그밑의 코드
sprintf(query, "./bindset %s %s", buf,peeraddr);
를 실행시키면 엉뚱한값이 왜나오는지 조언부탁드립니다
참 이상하내여
inet_ntop 함수를 잘못사용한건가요
부탁합니다
zedai1972의 이미지

query 라는 버퍼에 쓰레기값이 들어서 그런게 아닐까여?

sprintf(query~함수 전에 아래 코드를 삽입해보세요

bzero((void*)query,sizeof(query));

그리고, 문제가 있을땐 gdb를 먼저 사용하여, 디버깅해보세요 ^^
잘 아시겠지만. 위의 문제는 gdb를 한번 돌리면 해결될 수 있는
문제인거 같거덩요 .. 버퍼관련 문제는 특히나 ^^;;

Quote:

1. 컴파일 옵션에 -g를 준다.
2. #gdb 실행화일이름
3. gdb>b main
4. 의심이 나는 함수가 잇다면 아래를 실행한다.
gdb>b 함수명
5.
gdb> r 옵션(프로그램 실행시 옵션... 있다면)
6.
한줄 한줄씩 실행하려면 아래처럼(main에서 멈춘상태)
gdb>n

위에서 함수에 대해 b(break)를 걸었다면 아래를 실행한다.
gdb>c
7. 의심이 나는 버퍼 ( 위에서 처럼 query란 버퍼의 경우처럼)를
추적하고플땐
gdb> display 버퍼명(가령 query)
8. 한줄씩 실행하며 해당 버퍼의 내용을 추적한다. 아래처럼
gdb> n

위의 단계로 하시면 , 위의 문제나 그밖의 기본적인 디버깅은
될거 같네요 ^^;; 다 아시는 문제일거 같은데 혹시나 해서요.

\\(^^ )^^)// **

moonzoo의 이미지

앗 잘배웠습니다.

jjjjrr의 이미지

안녕하세요
답변감사합니다
근데여 여전히 안됩니다
220.76.242.48query=./bindset aa.da77.com.H Linux 220.76.242.48
이렇게나옵니다
이젠H 가 하나더붙어서나옵니다
gdb를 사용해보려구했더니
좀 배워서 해야겠읍니다
h linux 란글자가 왜붙는지 모르겠읍니다

지리즈의 이미지

혹 모르니까,

bzero((void*)buf,sizeof(buf));
도 해보세요...

There is no spoon. Neo from the Matrix 1999.

jjjjrr의 이미지

감사합니다
해결되었읍니다
그것때문이었읍니다
즐거운하루되세요

댓글 달기

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