Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //--------------- server ------------------------
- // Author : benabdejlil omar ----------------
- #include<stdio.h>
- #include<string.h> //strlen
- #include<stdlib.h> //strlen
- #include<sys/socket.h>
- #include<arpa/inet.h>//inet_addr
- #include<unistd.h> //write
- #include<pthread.h>//forthreading,linkwithlpthread
- void *connection_handler(void*);
- int main(int argc,char *argv[])
- {
- int socket_desc,client_sock,c;
- struct sockaddr_in server,client;
- //--------------creation du socket ---------------
- socket_desc=socket(AF_INET,SOCK_STREAM,0);
- if(socket_desc==-1)
- {
- printf("Couldnotcreatesocket");
- }
- puts("Socketcreated");
- //----------preparation d'instructure : parametre de la socket -------------
- server.sin_family=AF_INET;
- server.sin_addr.s_addr=INADDR_ANY;
- server.sin_port=htons(8888);
- //Bind
- if(bind(socket_desc,(struct sockaddr*)&server,sizeof(server))<0)
- {
- //--------- afficher le mesage d'error --------------
- perror("bindfailed.Error");
- return 1;
- }
- puts("binddone");
- //------------------ecouter ----------
- listen(socket_desc,3);
- //----------------accepter les connection a partir du client------------------
- puts("Waitingforincomingconnections...");
- c=sizeof(struct sockaddr_in);
- puts("Waitingforincomingconnections...");
- c=sizeof(struct sockaddr_in);
- pthread_t thread_id;
- while((client_sock=accept(socket_desc,(struct sockaddr*)&client,(socklen_t*)&c)))
- {
- puts("Connectionaccepted");
- if(pthread_create(&thread_id,NULL, connection_handler,(void*)&client_sock)<0){
- perror("couldnotcreatethread");
- return 1;
- }
- {
- //-------- assigne le thread pour chaque client -------------
- puts("Handlerassigned");
- }}
- if(client_sock<0)
- {
- perror("acceptfailed");
- return 1;
- }
- {
- return 0;
- }
- /*
- -------------handle chaque client icii -----------------------
- * */
- void *connection_handler(void*socket_desc)
- {
- //Getthesocketdescriptor
- int sock=*(int*)socket_desc;
- int read_size;
- char*message,client_message[2000];
- //----envoyer un message a client ---------------------
- message="Greetings!Iamyourconnectionhandler\n";
- write(sock,message,strlen(message));
- message="Nowtypesomethingandishallrepeatwhatyoutype\n";
- write(sock,message,strlen(message));
- //Receiveamessagefromclient
- while((read_size=recv(sock,client_message,2000,0))>0)
- {
- //endofstringmarker
- client_message[read_size]='\0';
- //Sendthemessagebacktoclient
- write(sock,client_message,strlen(client_message));
- //clearthemessagebuffer
- memset(client_message,0,2000);
- }
- if(read_size==0)
- {
- puts("Clientdisconnected");
- fflush(stdout);
- }
- else if(read_size==-1)
- {
- perror("recvfailed");
- }
- return 0;
- }}
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement