Advertisement
Guest User

Untitled

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