Advertisement
Guest User

Untitled

a guest
Nov 30th, 2015
60
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.45 KB | None | 0 0
  1. int main(int argc, char *argv[])
  2. {
  3. int sockfd, newsockfd, *new_sock, portno;
  4. socklen_t clilen;
  5. struct sockaddr_in serv_addr, cli_addr;
  6.  
  7. if(argc != 1)
  8. {
  9. fprintf(stderr, "ERROR, to run: ./server\n");
  10. exit(1);
  11. }
  12.  
  13. bank_init();
  14. //Create socket
  15. sockfd = socket(AF_INET, SOCK_STREAM, 0);
  16. if(sockfd == -1) printf("Could not create socket\n");
  17.  
  18. bzero((char *) &serv_addr, sizeof(serv_addr));
  19. portno = atoi(PORT);
  20.  
  21. //Prepare the sockaddr_in structure
  22. serv_addr.sin_family = AF_INET;
  23. serv_addr.sin_addr.s_addr = INADDR_ANY;
  24. serv_addr.sin_port = htons(portno);
  25.  
  26. //Bind
  27. if(bind(sockfd, (struct sockaddr *) &serv_addr, sizeof(serv_addr)) < 0)
  28. error("ERROR on binding");
  29.  
  30. //Listen
  31. listen(sockfd, 5);
  32.  
  33. //Accept and incomming connections
  34. clilen = sizeof(cli_addr);
  35.  
  36. while(1){
  37. newsockfd = accept(sockfd, (struct sockaddr *) &cli_addr, &clilen);
  38. if(newsockfd < 0) error("ERROR on accept");
  39. pthread_t sniffer_thread;
  40. new_sock = malloc(1);
  41. *new_sock = newsockfd;
  42. if(pthread_create(&sniffer_thread, NULL, client_service_thread, (void *) new_sock) < 0)
  43. {
  44. error("ERROR, could not create thread\n");
  45. return 1;
  46. }
  47. pthread_detach(sniffer_thread);
  48. }
  49.  
  50. if(newsockfd < 0)
  51. {
  52. error("ERROR, accept failed\n");
  53. return 1;
  54. }
  55.  
  56. close(newsockfd);
  57. close(sockfd);
  58. return 0;
  59. }
  60.  
  61. void *client_service_thread(void *socket_desc)
  62. {
  63. int sock = *(int*)socket_desc;
  64. int c,n;
  65. char buffer[256];
  66. bzero(buffer, 256);
  67. n = read(sock,buffer,255);
  68. if (n < 0) error("ERROR reading from socket");
  69. printf("Here is the message: %s\n",buffer);
  70. if(strncmp(buffer, "open", 4) == 0)
  71. {
  72. if( (c = open(&buffer[4])) < 0)
  73. {
  74. error("Error opening a new account.\n");
  75. return 0;
  76. }
  77. }
  78. n = write(sock,"I got your message",18);
  79. if (n < 0) error("ERROR writing to socket");
  80. return 0;
  81. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement