Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> सी प्रोग्रामिंग

यूडीपी का उपयोग कर फाइल ट्रांसफर के लिए सी प्रोग्राम?

सी में सॉकेट प्रोग्रामिंग को लागू करने वाले दो कंप्यूटरों के बीच डेटा स्थानांतरित किया जा सकता है।

उसी स्थिति में, उपयोगकर्ता डेटाग्राम प्रोटोकॉल (यूडीपी) और साधारण क्लाइंट/सर्वर को लागू करने वाली फाइलें आसानी से भेजी जा सकती हैं।

सुरक्षा - एन्क्रिप्शन द्वारा नियंत्रित।

प्रोटोकॉल - यूडीपी

एन्क्रिप्शन - XOR एन्क्रिप्शन

एल्गोरिदम

  • सर्वर शुरू हो गया है और फ़ाइल नाम की प्रतीक्षा कर रहा है।

  • क्लाइंट द्वारा एक फ़ाइल नाम भेजा जाता है।

  • यह फ़ाइल नाम सर्वर द्वारा प्राप्त किया जाता है। यदि फ़ाइल मौजूद है, तो सर्वर फ़ाइल को पढ़ना शुरू कर देता है और जब तक फ़ाइल का अंत नहीं हो जाता तब तक एन्क्रिप्टेड फ़ाइल सामग्री से भरा बफर भेजना जारी रखता है।

  • फ़ाइल का अंत ईओएफ द्वारा चिह्नित है।

  • जब तक ईओएफ प्राप्त नहीं हो जाता तब तक फाइल बफर के रूप में प्राप्त होती है। उसके बाद इसे एन्क्रिप्ट किया जाता है।

  • यदि फ़ाइल मौजूद नहीं है, तो "फ़ाइल नहीं मिली" संदेश भेजा जाता है।

सर्वर

// server code for UDP socket programming
#include <arpa/inet.h>
#include <netinet/in.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <unistd.h>
#define IP_Protocol 0
#define Port_No 15050
#define Net_Buf_Size 32
#define CipherKey 'S'
#define SendRecvFlag 0
#define NoFile "File Not Found!"
// function for clearing buffer
void clearBuf(char* b1){
   int i;
   for (i = 0; i < Net_Buf_Size; i++)
   b1[i] = '\0';
}
// function for encryption method
char Cipher(char ch1){
   return ch1 ^ CipherKey;
}
// function for sending file
int sendFile(FILE* fp1, char* buf1, int s1){
   int i, len;
   if (fp1 == NULL) {
      strcpy(buf1, NoFile);
      len = strlen(NoFile);
      buf1[len] = EOF;
      for (i = 0; i <= len; i++)
      buf1[i] = Cipher(buf1[i]);
      return 1;
   }
   char ch1, ch2;
   for (i = 0; i < s1; i++) {
      ch1= fgetc(fp);
      ch2 = Cipher(ch1);
      buf1[i] = ch2;
      if (ch1 == EOF)
      return 1;
   }
   return 0;
}
// driver code
int main(){
   int sockfd1, nBytes;
   struct sockaddr_in addr_con;
   int addrlen = sizeof(addr_con);
   addr_con.sin_family = AF_INET;
   addr_con.sin_port = htons(Port_No);
   addr_con.sin_addr.s_addr = INADDR_ANY;
   char net_buf1[Net_Buf_Size];
   FILE* fp1;
   // socket()
   sockfd1 = socket(AF_INET, SOCK_DGRAM, IP_Protocol);
   if (sockfd1 < 0)
      printf("\nfile descriptor is not received!!\n");
   else
      printf("\nfile descriptor %d is received\n", sockfd1);
   // bind()
   if (bind(sockfd1, (struct sockaddr*)&addr_con,
      sizeof(addr_con)) == 0)
      printf("\nSuccessfully is binded!\n");
   else
      printf("\nBinding is Failed!\n");
   while (1) {
      printf("\nWaiting for name of file...\n");
      // receive name of file
      clearBuf(net_buf1);
      nBytes = recvfrom(sockfd1, net_buf1,
      Net_Buf_Size, SendRecvFlag,
      (struct sockaddr*)&addr_con,
      &addrlen);
      fp1 = fopen(net_buf1, "r");
      printf("\nFile Name is Received: %s\n", net_buf1);
      if (fp1 == NULL)
      printf("\nFile open is failed!\n");
      else
      printf("\nFile Successfully is opened!\n");
      while (1) {
         // process
         if (sendFile(fp1, net_buf1, Net_Buf_Size)) {
            sendto(sockfd1, net_buf1, Net_Buf_Size,
            SendRecvFlag,
            (struct sockaddr*)&addr_con,
            addrlen);
            break;
         }
         // send
         sendto(sockfd1, net_buf1, Net_Buf_Size,
         SendRecvFlag,
         (struct sockaddr*)&addr_con, addrlen);
         clearBuf(net_buf1);
      }
      if (fp1 != NULL)
      fclose(fp1);
   }
return 0;
}

ग्राहक

// client code for UDP socket programming
#include <arpa/inet.h>
#include <netinet/in.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <unistd.h>
#define IP_Protocol 0
#define IP_Address "127.0.0.1" // localhost
#define Port_No 15050
#define Net_Buf_Size 32
#define CipherKey 'S'
#define SendRecvFlag 0
// function for clearing buffer
void clearBuf(char* b1){
   int i;
   for (i = 0; i < Net_Buf_Size; i++)
   b1[i] = '\0';
}
// function for decryption method
char Cipher(char ch1){
   return ch1 ^ CipherKey;
}
// function for receiveing file
int recvFile(char* buf1, int s1)
{
   int i;
   char ch1;
   for (i = 0; i < s1; i++) {
      ch1 = buf1[i];
      ch1 = Cipher(ch1);
      if (ch1 == EOF)
      return 1;
      else
      printf("%c", ch1);
   }
   return 0;
}
// driver code
int main(){
   int sockfd1, nBytes;
   struct sockaddr_in addr_con;
   int addrlen = sizeof(addr_con);
   addr_con.sin_family = AF_INET;
   addr_con.sin_port = htons(Port_No);
   addr_con.sin_addr.s_addr = inet_addr(IP_Address);
   char net_buf1[Net_Buf_Size];
   FILE* fp1;
   // socket()
   sockfd1 = socket(AF_INET, SOCK_DGRAM,
   IP_Protocol);
   if (sockfd1 < 0)
   printf("\nfile descriptor is not received!!\n");
   else
   printf("\nfile descriptor %d is received\n", sockfd1);
   while (1) {
      printf("\nPlease enter the name of file to receive:\n");
      scanf("%s", net_buf1);
      sendto(sockfd1, net_buf1, Net_Buf_Size,
      SendRecvFlag, (struct sockaddr*)&addr_con,
      addrlen);
      printf("\n---------Data is Received---------\n");
      while (1) {
         // receive
         clearBuf(net_buf1);
         nBytes = recvfrom(sockfd1, net_buf1, Net_Buf_Size,
         SendRecvFlag, (struct
         sockaddr*)&addr_con,
         &addrlen);
         // process
         if (recvFile(net_buf1, Net_Buf_Size)) {
            break;
         }
      }
      printf("\n-------------------------------\n");
   }
   return 0;
}

  1. पीसी के लिए वाई-फाई फ़ाइल स्थानांतरण:आसानी से फ़ाइलें स्थानांतरित करें

    जब आपको अपने फोन के डेटा को अपने पीसी में सहेजने की आवश्यकता होती है, तो आप कई तरीकों का उपयोग कर सकते हैं। कभी-कभी, हम USB स्थानांतरण का उपयोग करना पसंद करते हैं, और दूसरी बार ब्लूटूथ स्थानांतरण एक प्रासंगिक विकल्प की तरह लगता है। हालांकि, यह माना जाता है कि वाईफाई फाइल ट्रांसफर पीसी डाउनलोड अन्य

  1. पीसी के लिए शीर्ष 6 फ़ाइल स्थानांतरण ऐप्स

    वे दिन गए जब हमें अपने डेटा को एक सिस्टम से दूसरे सिस्टम या स्मार्टफोन में स्थानांतरित करने के लिए इतनी अवांछित परेशानी से गुजरना पड़ता था। आजकल, बहुत सारे आसानी से उपलब्ध एप्लिकेशन हैं जिनका उपयोग आप अपने डेटा को अपने पीसी से स्मार्टफोन या किसी अन्य पीसी में स्थानांतरित करने के लिए कर सकते हैं। इसल

  1. Android के लिए पीसी के लिए 8 सर्वश्रेष्ठ फ़ाइल स्थानांतरण ऐप्स

    कई उपयोगकर्ता नया फोन खरीदते समय या पुराने फोन को रिस्टोर करते समय फोन से पीसी में डेटा ट्रांसफर करते हैं। कई बार हमें बस डेटा को पीसी में स्थानांतरित करने की आवश्यकता होती है क्योंकि हमारा फोन भर जाता है और हमें बिना किसी रुकावट के प्रक्रियाओं को निष्पादित करने के लिए स्थान की आवश्यकता होती है। उप