1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70
| #include<string.h> #include <sys/types.h> #include <sys/socket.h> #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <netinet/in.h>
#define SERVPORT 3333 #define BACKLOG 10 #define MAXDATASIZE 5
int main() { struct sockaddr_in server_sockaddr,client_sockaddr; int sockfd,client_fd; int sin_size,recvbytes; char buf[MAXDATASIZE];
if((sockfd = socket(AF_INET,SOCK_STREAM,0)) == -1) { perror("Socket"); exit(1); }
printf("Socket success!,sockfd=%d\n",sockfd);
server_sockaddr.sin_family = AF_INET; server_sockaddr.sin_port = htons(SERVPORT); server_sockaddr.sin_addr.s_addr = INADDR_ANY; bzero(&(server_sockaddr.sin_zero),8);
if((bind(sockfd,(struct sockaddr *)&server_sockaddr,sizeof(struct sockaddr))) == -1) { perror("bind"); exit(-1); }
printf("bind success!\n");
if(listen(sockfd,BACKLOG) == -1) { perror("listen"); exit(1); }
printf("listening ... \n");
while(1){
if((client_fd = accept(sockfd,(struct sockaddr *) &client_sockaddr,&sin_size)) == -1) { perror("accept"); exit(1); }
printf("accept success!\n");
if((recvbytes = recv(client_fd,buf,MAXDATASIZE,0)) == -1) { perror("recv"); exit(1); } printf("received a connection : %s\n",buf); }
close(sockfd); }
|