Advertisement
Guest User

Server coté -- BENABDEJLIL OMAR

a guest
Dec 9th, 2019
127
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.59 KB | None | 0 0
  1. //--------------- server ------------------------
  2. // Author : benabdejlil omar  ----------------
  3.  
  4.  
  5. #include<stdio.h>
  6. #include<string.h>  //strlen
  7. #include<stdlib.h>  //strlen
  8. #include<sys/socket.h>
  9. #include<arpa/inet.h>//inet_addr
  10. #include<unistd.h>  //write
  11. #include<pthread.h>//forthreading,linkwithlpthread
  12.  
  13.  
  14. void *connection_handler(void*);
  15.  
  16. int main(int argc,char *argv[])
  17. {
  18. int socket_desc,client_sock,c;
  19. struct sockaddr_in server,client;
  20. //--------------creation du socket ---------------
  21. socket_desc=socket(AF_INET,SOCK_STREAM,0);
  22. if(socket_desc==-1)
  23. {
  24. printf("Couldnotcreatesocket");
  25. }
  26. puts("Socketcreated");
  27. //----------preparation d'instructure : parametre de la socket -------------
  28. server.sin_family=AF_INET;
  29. server.sin_addr.s_addr=INADDR_ANY;
  30. server.sin_port=htons(8888);
  31. //Bind
  32. if(bind(socket_desc,(struct sockaddr*)&server,sizeof(server))<0)
  33. {
  34. //--------- afficher le mesage  d'error --------------
  35. perror("bindfailed.Error");
  36. return 1;
  37. }
  38. puts("binddone");
  39. //------------------ecouter ----------
  40. listen(socket_desc,3);
  41. //----------------accepter les connection a partir du client------------------
  42. puts("Waitingforincomingconnections...");
  43. c=sizeof(struct sockaddr_in);
  44. puts("Waitingforincomingconnections...");
  45. c=sizeof(struct sockaddr_in);
  46. pthread_t thread_id;
  47. while((client_sock=accept(socket_desc,(struct sockaddr*)&client,(socklen_t*)&c)))
  48. {
  49.     puts("Connectionaccepted");
  50.  
  51.  
  52. if(pthread_create(&thread_id,NULL,  connection_handler,(void*)&client_sock)<0){
  53.  
  54. perror("couldnotcreatethread");
  55. return 1;
  56. }
  57. {
  58. //-------- assigne le thread pour chaque client -------------
  59. puts("Handlerassigned");
  60. }}
  61. if(client_sock<0)
  62. {
  63.     perror("acceptfailed");
  64.     return 1;
  65. }
  66. {
  67.     return 0;
  68. }
  69. /*
  70. -------------handle chaque client icii -----------------------
  71. * */
  72. void *connection_handler(void*socket_desc)
  73. {
  74. //Getthesocketdescriptor
  75. int sock=*(int*)socket_desc;
  76. int read_size;
  77. char*message,client_message[2000];
  78.  
  79. //----envoyer un message a client ---------------------
  80. message="Greetings!Iamyourconnectionhandler\n";
  81. write(sock,message,strlen(message));
  82. message="Nowtypesomethingandishallrepeatwhatyoutype\n";
  83. write(sock,message,strlen(message));
  84. //Receiveamessagefromclient
  85. while((read_size=recv(sock,client_message,2000,0))>0)
  86. {
  87. //endofstringmarker
  88. client_message[read_size]='\0';
  89. //Sendthemessagebacktoclient
  90. write(sock,client_message,strlen(client_message));
  91. //clearthemessagebuffer
  92. memset(client_message,0,2000);
  93. }
  94. if(read_size==0)
  95. {
  96. puts("Clientdisconnected");
  97. fflush(stdout);
  98. }
  99. else if(read_size==-1)
  100. {
  101. perror("recvfailed");
  102. }
  103. return 0;
  104. }}
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement