# include < stdio. H> # include < string. H> # include < Sys/socket. H> # include < Netinet/in. h>
# define Maxdatasize 1024
# define ServerPort 8000 # define Maxconn_num 10
int main () { Char buf[maxdatasize]; int SOCKFD, NEW_FD, numbytes; struct sockaddr_in server_addr; struct sockaddr_in client_addr; int sin_size; if ((SOCKFD = socket (af_inet, sock_stream, 0)) = =-1) { Perror ("socket error"); return 1; } memset (& client_addr, 0, sizeof (struct sockaddr)); Server_addr. sin_family = af_inet; Server_addr. Sin_port = htons (ServerPort); Server_addr. Sin_addr. S_ADDR = Inaddr_any; if (bind (SOCKFD, struct sockaddr *) & server_addr, sizeof (struct sockaddr)) = =-1) { Perror ("bind error"); return 1; } if (Listen (SOCKFD, maxconn_num) = =-1) { Perror ("Listen error"); return 1; }
while (1) { sin_size = sizeof (struct sockaddr_in); if (new_fd = Accept (SOCKFD, (struct sockaddr *) & Client_addr, & sin_size) = =-1) { Perror ("Accept error"); Continue; } printf ("Server:got connection from%s/n", Inet_ntoa (client_addr. sin_addr)); if ((numbytes = recv (new_fd, buf, maxdatasize, 0)) = =-1) { Perror ("recv error"); return 1; } if (numbytes) { buf[numbytes] = '/0 '; printf ("Received:%s/n", buf); Sleep (3); } printf ("send:hi~~/n"); if (Send (NEW_FD, "hi~~", 5, 0) = =-1) { Perror ("Send Error"); return 1; } Close (NEW_FD); } return 0; } |