|
# 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;
} |