Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- int main(int argc, char *argv[])
- {
- int sockfd, newsockfd, *new_sock, portno;
- socklen_t clilen;
- struct sockaddr_in serv_addr, cli_addr;
- if(argc != 1)
- {
- fprintf(stderr, "ERROR, to run: ./server\n");
- exit(1);
- }
- bank_init();
- //Create socket
- sockfd = socket(AF_INET, SOCK_STREAM, 0);
- if(sockfd == -1) printf("Could not create socket\n");
- bzero((char *) &serv_addr, sizeof(serv_addr));
- portno = atoi(PORT);
- //Prepare the sockaddr_in structure
- serv_addr.sin_family = AF_INET;
- serv_addr.sin_addr.s_addr = INADDR_ANY;
- serv_addr.sin_port = htons(portno);
- //Bind
- if(bind(sockfd, (struct sockaddr *) &serv_addr, sizeof(serv_addr)) < 0)
- error("ERROR on binding");
- //Listen
- listen(sockfd, 5);
- //Accept and incomming connections
- clilen = sizeof(cli_addr);
- while(1){
- newsockfd = accept(sockfd, (struct sockaddr *) &cli_addr, &clilen);
- if(newsockfd < 0) error("ERROR on accept");
- pthread_t sniffer_thread;
- new_sock = malloc(1);
- *new_sock = newsockfd;
- if(pthread_create(&sniffer_thread, NULL, client_service_thread, (void *) new_sock) < 0)
- {
- error("ERROR, could not create thread\n");
- return 1;
- }
- pthread_detach(sniffer_thread);
- }
- if(newsockfd < 0)
- {
- error("ERROR, accept failed\n");
- return 1;
- }
- close(newsockfd);
- close(sockfd);
- return 0;
- }
- void *client_service_thread(void *socket_desc)
- {
- int sock = *(int*)socket_desc;
- int c,n;
- char buffer[256];
- bzero(buffer, 256);
- n = read(sock,buffer,255);
- if (n < 0) error("ERROR reading from socket");
- printf("Here is the message: %s\n",buffer);
- if(strncmp(buffer, "open", 4) == 0)
- {
- if( (c = open(&buffer[4])) < 0)
- {
- error("Error opening a new account.\n");
- return 0;
- }
- }
- n = write(sock,"I got your message",18);
- if (n < 0) error("ERROR writing to socket");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement