Advertisement
Guest User

Untitled

a guest
Apr 3rd, 2017
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.88 KB | None | 0 0
  1. client side:
  2.  
  3.  
  4. l#include <stdio.h>
  5. #include <sys/types.h>
  6. #include <sys/socket.h>
  7. #include <netinet/in.h>
  8. #include <string.h>
  9. #include <stdlib.h>
  10. #include <unistd.h>
  11. #include <netdb.h>
  12.  
  13. int authentication(int socket);
  14. int main(int argc, char *argv[])
  15. {
  16.  
  17. struct sockaddr_in server;
  18. struct hostent *host;
  19. char uname[100];
  20. char buffer[5000];
  21. int portno,socky,n;
  22. int length = 0,ch,i,p;
  23. char cha;
  24. int *new_sock;
  25. int orig_length = 0;
  26.  
  27. if(argc < 3)
  28. {
  29. perror("insufficient inputs"); //checking the inputs
  30. exit(1);
  31. }
  32.  
  33. if((socky = socket(AF_INET,SOCK_STREAM,0)) < 0)
  34. {
  35. perror("nerror in socket creation"); //socket creation
  36. exit(1);
  37. }
  38.  
  39. printf("nsocket successfully created");
  40.  
  41. server.sin_family = AF_INET;
  42. portno = atoi(argv[2]);
  43. server.sin_port = htons(portno);
  44. host = gethostbyname(argv[1]);
  45. if(host == NULL)
  46. {
  47. perror("nerror in getting host address");
  48. exit(1);
  49. }
  50.  
  51. memcpy (&server.sin_addr.s_addr, host->h_addr,host->h_length);
  52.  
  53. if((connect(socky,&server,sizeof(server)))<0)
  54. {
  55. perror("nerror in connection");
  56. exit(1);
  57. }
  58. while(1)
  59. {
  60. printf("n select an option");
  61. printf("n1->student loginn2->Instructor loginn3->Admin loginn");
  62. printf("n came near scanf");
  63. scanf("%d",&ch);
  64. //printf("nselected value: %c",ch)
  65. if(ch == 1)
  66. {
  67.  
  68.  
  69. p = authentication(socky);
  70.  
  71. }
  72. else{
  73. printf("n invalid option");
  74. }
  75.  
  76. }
  77. return 0;
  78. }
  79.  
  80.  
  81.  
  82.  
  83.  
  84. int authentication(int socky)
  85. {
  86. char buffer[5000];
  87. char cha;
  88. char uname[100];
  89. int n,i;
  90. bzero(buffer,5000);
  91. buffer[0] = '1';
  92. buffer[1] = '';
  93. printf("n%s",buffer);
  94. if(n = (write(socky,buffer,strlen(buffer))) < 0)
  95. {
  96. perror("nerror in writing the message");
  97. exit(1);
  98. }
  99. sleep(10);
  100. bzero(buffer,5000);
  101. printf("nenter the username:n");
  102. scanf("%s",&uname);
  103. strcpy(buffer,uname);
  104. printf("%s",buffer);
  105. fgets(buffer,5000,stdin);
  106. if((n = write(socky,buffer,strlen(buffer))) < 0)
  107. {
  108. perror("nerror in writing the message");
  109. exit(1);
  110. }
  111.  
  112. bzero(buffer,5000);
  113. printf("nenter the password:n");
  114. for(i =0; cha!=10; i++)
  115. {
  116. cha = fgetc(stdin);
  117. //printf("*");
  118. buffer[i] = cha;
  119. }
  120. buffer[i] = '';
  121. printf("n entered password is :%s",buffer);
  122. if((n = write(socky,buffer,strlen(buffer))) < 0)
  123. {
  124. perror("nerror in writing the message");
  125. exit(1);
  126. }
  127. return 0;
  128. }
  129.  
  130. #include <stdio.h>
  131. #include <string.h> //strlen
  132. #include <stdlib.h> //strlen
  133. #include <sys/socket.h>
  134. #include <arpa/inet.h> //inet_addr
  135. #include <unistd.h> //write
  136. #include <pthread.h> //for threading , link with lpthread
  137. #include <fcntl.h>
  138. #include <time.h>
  139. //the thread function
  140. void *connection_handler(void *);
  141.  
  142. int main(int argc , char *argv[])
  143. {
  144. int socket_desc , client_sock , c , *new_sock;
  145. struct sockaddr_in server , client;
  146. int n;
  147. char buffer[5000];
  148.  
  149. //Create socket
  150. socket_desc = socket(AF_INET , SOCK_STREAM , 0);
  151. if (socket_desc == -1)
  152. {
  153. printf("Could not create socket");
  154. }
  155. puts("Socket created");
  156.  
  157. //Prepare the sockaddr_in structure
  158. server.sin_family = AF_INET;
  159. server.sin_addr.s_addr = INADDR_ANY;
  160. server.sin_port = htons( atoi(argv[1]));
  161.  
  162. //Bind
  163. if( bind(socket_desc,(struct sockaddr *)&server , sizeof(server)) < 0)
  164. {
  165. //print the error message
  166. perror("bind failed. Error");
  167. return 1;
  168. }
  169. puts("bind done");
  170.  
  171. //Listen
  172. listen(socket_desc , 3);
  173.  
  174. //Accept and incoming connection
  175. puts("Waiting for incoming connections...");
  176. c = sizeof(struct sockaddr_in);
  177.  
  178. c=sizeof(struct sockaddr_in);
  179. while(client_sock=accept(socket_desc,(struct sockaddr*)&client,(socklen_t*)&c))
  180. {
  181. puts("Connection accepted");
  182.  
  183. // if( (n = recv(client_sock,buffer,5000,0)) < 0)
  184. // {
  185. // perror("nreading from socket failed");
  186. // exit(1);
  187. //}
  188. //printf("nread message:%s",buffer);
  189.  
  190. pthread_t sniffer_thread;
  191. new_sock = malloc(1);
  192. *new_sock = client_sock;
  193.  
  194.  
  195. if( pthread_create( &sniffer_thread , NULL , connection_handler , (void*) new_sock) < 0)
  196. {
  197. perror("could not create thread");
  198. return 1;
  199. }
  200.  
  201. puts("Handler assigned");
  202. }
  203.  
  204. if (client_sock < 0)
  205. {
  206. perror("accept failed");
  207. return 1;
  208. }
  209. return 0;
  210. }
  211. /*
  212. This will handle connection for each client
  213. */
  214. void *connection_handler(void *socket_desc)
  215. {
  216. //Get the socket descriptor
  217. int sock = *(int*)socket_desc;
  218. int n;
  219. char buffer[5000];
  220. printf("n came inside connection handler");
  221.  
  222. while(1)
  223. {
  224. bzero(buffer,5000);
  225. if( (n = recv(sock,buffer,5000,0)) < 0)
  226. {
  227. perror("nreading from socket failed");
  228. exit(1);
  229. }
  230. printf("nread message:%s",buffer);
  231. if(n < 0)
  232. {
  233. perror("n Reading failed");
  234. }
  235. if(n==0)
  236. {
  237. puts("nClient Disconnected");
  238. break;
  239. }
  240.  
  241. sleep(5);
  242. }
  243.  
  244.  
  245. close(sock);
  246. return 0;
  247. }
  248.  
  249.  
  250.  
  251.  
  252.  
  253.  
  254. output on server side is as follows:
  255. came inside connection handler
  256. read message:1
  257. read message:
  258.  
  259. read message:mypassword
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement