점백이삼형제구하기
글쓴이: jjjjrr / 작성시간: 수, 2003/06/11 - 3:57오전
미안합니다
또질문입니다
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 함수를 잘못사용한건가요
부탁합니다
Forums:
^^;
query 라는 버퍼에 쓰레기값이 들어서 그런게 아닐까여?
sprintf(query~함수 전에 아래 코드를 삽입해보세요
그리고, 문제가 있을땐 gdb를 먼저 사용하여, 디버깅해보세요 ^^
잘 아시겠지만. 위의 문제는 gdb를 한번 돌리면 해결될 수 있는
문제인거 같거덩요 .. 버퍼관련 문제는 특히나 ^^;;
위의 단계로 하시면 , 위의 문제나 그밖의 기본적인 디버깅은
될거 같네요 ^^;; 다 아시는 문제일거 같은데 혹시나 해서요.
\\(^^ )^^)// **
감사여
앗 잘배웠습니다.
답변감사합니다
안녕하세요
답변감사합니다
근데여 여전히 안됩니다
220.76.242.48query=./bindset aa.da77.com.H Linux 220.76.242.48
이렇게나옵니다
이젠H 가 하나더붙어서나옵니다
gdb를 사용해보려구했더니
좀 배워서 해야겠읍니다
h linux 란글자가 왜붙는지 모르겠읍니다
혹 모르니까,bzero((void*)buf,sizeof(buf))
혹 모르니까,
bzero((void*)buf,sizeof(buf));
도 해보세요...
There is no spoon. Neo from the Matrix 1999.
즐거운하루되세요
감사합니다
해결되었읍니다
그것때문이었읍니다
즐거운하루되세요
댓글 달기