Advertisement
Guest User

Untitled

a guest
Dec 21st, 2018
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.05 KB | None | 0 0
  1. #include<stdio.h>
  2. #include<string.h>
  3. #include<sys/socket.h>
  4. #include<arpa/inet.h>
  5.  
  6. #define DEFAULT_BUFLEN 512
  7. #define DEFAULT_PORT 27015
  8. #define MAX_FILES_NAME 40
  9.  
  10. int sock, read_size;
  11. struct sockaddr_in server;
  12. char server_reply[DEFAULT_BUFLEN];
  13.  
  14. void login();
  15. void menu();
  16.  
  17. int main(int argc , char *argv[])
  18. {
  19.  
  20. //keep communicating with server
  21. login();
  22.  
  23. menu();
  24.  
  25. close(sock);
  26.  
  27. return 0;
  28. }
  29.  
  30. void login(){
  31. char user[DEFAULT_BUFLEN];
  32. char password[DEFAULT_BUFLEN];
  33. //Create socket
  34. sock = socket(AF_INET , SOCK_STREAM , 0);
  35. if (sock == -1)
  36. {
  37. printf("Could not create socket");
  38. }
  39. puts("Socket created");
  40.  
  41. server.sin_addr.s_addr = inet_addr("127.0.0.1");
  42. server.sin_family = AF_INET;
  43. server.sin_port = htons( DEFAULT_PORT );
  44.  
  45. //Connect to remote server
  46. if (connect(sock , (struct sockaddr *)&server , sizeof(server)) < 0)
  47. {
  48. perror("connect failed. Error");
  49. return;
  50. }
  51.  
  52. puts("Connected\n");
  53. while(1)
  54. {
  55. memset(server_reply,0,strlen(server_reply));
  56. printf("Enter username : ");
  57. scanf("%s" , user);
  58.  
  59. //Send some data
  60. if( send(sock , user , strlen(user) , 0) < 0)
  61. {
  62. puts("Send failed");
  63. return;
  64. }
  65.  
  66. printf("Enter password : ");
  67. scanf("%s" , password);
  68.  
  69. //Send some data
  70. if( send(sock , password , strlen(password) , 0) < 0)
  71. {
  72. puts("Send failed");
  73. return;
  74. }
  75.  
  76.  
  77. //Receive a reply from the server
  78. if( recv(sock , server_reply , DEFAULT_BUFLEN , 0) < 0)
  79. {
  80. puts("recv failed");
  81. break;
  82. }
  83.  
  84. puts("Server reply :");
  85. puts(server_reply);
  86.  
  87. if(strcmp(server_reply, "success!") == 0){
  88. return;
  89. }
  90. }
  91. }
  92.  
  93. void menu(){
  94. char succ[] = "success!", fail[] = "failure!", message[DEFAULT_BUFLEN], fileName[MAX_FILES_NAME];
  95. char fileSize[DEFAULT_BUFLEN], filePath[DEFAULT_BUFLEN] = "./client_files/", chunk[1000];
  96. FILE *uploadFile;
  97. int size, i, n, ind=0;
  98. while(!ind){
  99. printf("\n1.upload\n2.download\n3.file list\n4.log off\n");
  100. printf("enter number: ");
  101. scanf("%s", message);
  102. if(message[1]!='\0'){
  103. printf("Enter one-digit number!\n");
  104. continue;
  105. }
  106. if( send(sock , message , DEFAULT_BUFLEN , 0) < 0)
  107. {
  108. puts("Send failed");
  109. return;
  110. }
  111. switch(message[0]){
  112. case '1':
  113. printf("Enter file name: ");
  114. scanf("%s", fileName);
  115. if(send(sock,fileName,MAX_FILES_NAME,0) < 0)
  116. {
  117. puts("Send failed");
  118. return;
  119. }
  120. strcat(filePath, fileName);
  121. if((uploadFile = fopen(filePath, "rb"))==NULL){
  122. perror("Opening upload file failed!\n");
  123. if(send(sock,fail,DEFAULT_BUFLEN,0) < 0)
  124. {
  125. puts("Send failed");
  126. return;
  127. }
  128. continue;
  129. }
  130. if(send(sock,succ,DEFAULT_BUFLEN,0) < 0)
  131. {
  132. puts("Send failed");
  133. return;
  134. }
  135. fseek(uploadFile, 0, SEEK_END);
  136. size = ftell(uploadFile);
  137. fseek(uploadFile, 0, SEEK_SET);
  138. n = size/1000;
  139. sprintf(fileSize, "%d", size);
  140. if(send(sock,fileSize,DEFAULT_BUFLEN,0) < 0)
  141. {
  142. puts("Send failed");
  143. return;
  144. }
  145.  
  146. for(i = 0; i < n; i++){
  147. fread(chunk, sizeof(char), 1000, uploadFile);
  148. if(send(sock,chunk,1000,0) < 0)
  149. {
  150. puts("Send failed");
  151. return;
  152. }
  153. }
  154. fread(chunk,sizeof(char),size%1000,uploadFile);
  155. if(send(sock,chunk,1000,0) < 0)
  156. {
  157. puts("Send failed");
  158. return;
  159. }
  160.  
  161. fclose(uploadFile);
  162. printf("Closing file successful!\n");
  163. break;
  164. case '2':
  165. break;
  166. case '3':
  167. printf("Files on server: ");
  168.  
  169. while(recv(sock , server_reply ,DEFAULT_BUFLEN, 0) > 0)
  170. {
  171. printf("%s", server_reply);
  172. memset(server_reply,0,strlen(server_reply));
  173. break;
  174. }
  175.  
  176. printf("\n");
  177. break;
  178. case '4':
  179. ind = 1;
  180. break;
  181. default:
  182. printf("Enter number between 1 and 4!\n");
  183. }
  184. }
  185. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement