|
http://www.hackerschool.org/HS_Boards/zboard.php?AllArticle=true&no=6443 [복사]
안녕하세요.
뇌를 자극하는 tcp/ip소켓 프로그래밍 이라는 책으로 공부를 하고 있습니다.
책 105페이지에 있는 예제를 컴파일해서 실행하니까 255.255.255.255에서 계속 연결이 온다고 뜹니다.
------------------------------------------------echo_server.c----------------------------------------------------
#include <sys/socket.h>
#include <sys/stat.h>
#include <arpa/inet.h>
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#define MAXBUF 1024
int main(int argc, char **argv)
{
int server_sockfd, client_sockfd;
int client_len, n;
int ahfma;
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;
}
printf("%s\n",buf);
if(write(client_sockfd, buf, MAXBUF)<=0)
{
perror("write error:");
close(client_sockfd);
}
close(client_sockfd);
}
close(server_sockfd);
return 0;
}
------------------------------------------------실행 결과------------------------------------------
$./echo_server 3500
New Client Connect:255.255.255.255
New Client Connect:255.255.255.255
New Client Connect:255.255.255.255
New Client Connect:255.255.255.255
New Client Connect:255.255.255.255
New Client Connect:255.255.255.255
New Client Connect:255.255.255.255
.
.
.
.
.
.
.
----------------------------------------------------------------------------------------------------------
어떤 부분에 문제가 있는건가요?
|
Hit : 5960 Date : 2014/02/24 10:18
|