172, 1/9 회원가입  로그인  
   han7685
   소켓프로그래밍 오류좀찾아주세요~ㅠ

http://www.hackerschool.org/HS_Boards/zboard.php?AllArticle=true&no=100 [복사]



#include<sys/socket.h>
#include<sys/stat.h>
#include<arpa/inet.h>
#include<stdio.h>
#include<string.h>
#define MAXBUF 1024

int main(int argc, char **argv)
{
int server_sockfd, client_sockfd;
int client_len, n;
char buf[MAXBUF];
struct sockaddr_in clientaddr, serveraddr;

client_len = sizeof(clientaddr);
if((server_sockfd = socket (AF_INET,SOCK_STREAM, IPPROTO_TCP)) == -1)
{
perror("socket error :");
exit(0);
}


}
bzero(&serveraddr, sizeof(serveraddr));
serveraddr.sin_family = AF_INET;
serveraddr.sin_addr.s_addr = htonl(INADDR_ANY);
serveraddr.sin_port= htons(atoi(argv[1]));
bind (server_sockfd, (struct sockaddr *)&serveraddr, sizeof(serveraddr));
listen(server_sockfd, 5);

while(1)
{
memset(buf,0x00,MAXBUF);
client_sockfd = accept(server_sockfd,
(struct sockaddr *)&clientaddr, &client_len);
printf("NEW Client connect : %s\n", inet_ntoa(clientaddr.sin_addr));
if((n=read(client_sockfd,buf,MAXBUF) <=0))
{
close(client_sockfd);
continue;
}
if(write(client_sockfd,buf,MAXBUF)<=0)
{
perror("write error:");
close(client_sockfd);
}
close(server_sockfd);
return 0;
}
main 과
19번쨰라인  exit(0)
45번째라인에서 에러가난데요...
아무리봐도 저는못찾겠네여...


  Hit : 4105     Date : 2012/11/19 10:55



    
보안왕 클라이언트 sock을 정해주는 clientlen을 int타입이 아니라 socklen_t 이거였나 이 타입으로 해주세요. 책에 그 부분 보시면 될거에요. 2012/11/21  
cd80 main함수에서 사용된 if문을 보시면
if((server_sockfd = socket (AF_INET,SOCK_STREAM, IPPROTO_TCP)) == -1)
{
perror("socket error :");
exit(0);
}


}

이렇게 돼있는데
if문을 끝낸 } 다음에 있는 } 때문에 에러가 납니다
2012/11/21