Mercurial > hg > Members > nobuyasu > konoha
view echoServer/echoServer.c @ 0:536b29f11352
add some files
author | Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Sat, 28 Apr 2012 21:01:53 +0900 |
parents | |
children |
line wrap: on
line source
/* * http://blog.majide.com/2009/02/socket-programming-server/ */ #include <stdio.h> #include <stdlib.h> #include <string.h> #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <unistd.h> #define PORT 8888 #define MAXDATA 2048 int main() { struct sockaddr_in saddr; struct sockaddr_in caddr; int listen_fd; int conn_fd; int len = sizeof(struct sockaddr_in); int rsize; char buf[MAXDATA]; if ((listen_fd = socket(AF_INET, SOCK_STREAM, 0)) < 0) { perror("socket"); exit(EXIT_FAILURE); } bzero((char *)&saddr, sizeof(saddr)); saddr.sin_family = PF_INET; saddr.sin_addr.s_addr = INADDR_ANY; saddr.sin_port = htons(PORT); if (bind(listen_fd, (struct sockaddr *)&saddr, len) < 0) { perror("bind"); exit(EXIT_FAILURE); } if (listen(listen_fd, SOMAXCONN) < 0) { perror("listen"); exit(EXIT_FAILURE); } printf("Start Listening Port : %d", PORT); if ((conn_fd = accept(listen_fd, (struct sockaddr *)&caddr, &len)) < 0) { perror("accept"); exit(EXIT_FAILURE); } printf("\nconn_fd = %d\n",conn_fd); close(listen_fd); do { rsize = recv(conn_fd, buf, MAXDATA, 0); if (rsize == 0) { break; } else if (rsize == -1) { perror("recv"); exit(EXIT_FAILURE); } else { write(conn_fd, buf, rsize); } } while(1); if ( close(conn_fd) < 0) { perror("error"); exit(EXIT_FAILURE); } printf("Connection close.\n"); return 0; }