#include #include #include #include #include #include #define IP_NO 192.168.0.25 #define PORT 42000 #define BACKLOG 10 int main(int argc,char** argv) { int sock; int new_fd; int yes = 1; struct sockaddr_in my_addr; struct sockaddr_in peer_addr; int sin_size; char *msg = "HTTP/1.1 200 OK\r\nServer: bajs\r\nContent-type: text/html\r\nContent-length: 4\r\n\r\nTEST"; if((sock = socket(PF_INET,SOCK_STREAM,0)) == -1) { perror("socket"); exit(EXIT_FAILURE); } my_addr.sin_family = AF_INET; my_addr.sin_port = htons(PORT); my_addr.sin_addr.s_addr = htonl(INADDR_ANY); memset(&(my_addr.sin_zero),sizeof(struct sockaddr_in),8); /* Zeroset rest of struct. */ if(bind(sock,(struct sockaddr *) &my_addr, sizeof(struct sockaddr)) == -1) { perror("bind"); exit(EXIT_FAILURE); } if(setsockopt(sock,SOL_SOCKET,SO_REUSEADDR,&yes,sizeof(int)) == -1) { perror("setsockopt"); exit(EXIT_FAILURE); } if(listen(sock,BACKLOG) == -1) { perror("listen"); exit(EXIT_FAILURE); } for(;;) { sin_size = sizeof(struct sockaddr_in); if((new_fd = accept(sock,(struct sockaddr *) &peer_addr, &sin_size)) == -1) { perror("accept"); exit(EXIT_FAILURE); } printf("server: got connection from %s\n", inet_ntoa(peer_addr.sin_addr)); if(!fork()) { close(sock); if((send(new_fd,msg,strlen(msg),0)) == -1) perror("send"); close(new_fd); exit(0); } close(new_fd); } return 0; }