使用UDP进行文件传输的C程序

使用udp进行文件传输的c程序

数据可以在两台使用 C 语言实现 Socket 编程的计算机之间传输。

在同样的情况下,可以轻松地通过实现用户数据报协议 (UDP) 和简单的客户端/服务器。

安全性 – 通过加密处理。

协议 – UDP

加密 – 异或加密

算法

服务器启动并等待文件名。

客户端发送文件名。

该文件名由服务器接收。如果文件存在,服务器开始读取文件,并继续发送一个填充有加密文件内容的缓冲区,直到到达文件末尾。

文件结尾标记为EOF。

文件将作为缓冲区接收,直到且除非收到 EOF。之后对其进行加密。

如果文件不存在,则会发送一条消息“找不到文件”。

服务器

// server code for UDP socket programming#include #include #include #include #include #include #include #include #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 buffervoid clearBuf(char* b1){   int i;   for (i = 0; i 

file descriptor is not received!!

");   else      printf("

file descriptor %d is received

", sockfd1);   // bind()   if (bind(sockfd1, (struct sockaddr*)&addr_con,      sizeof(addr_con)) == 0)      printf("

Successfully is binded!

");   else      printf("

Binding is Failed!

");   while (1) {      printf("

Waiting for name of file...

");      // 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("

File Name is Received: %s

", net_buf1);      if (fp1 == NULL)      printf("

File open is failed!

");      else      printf("

File Successfully is opened!

");      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 #include #include #include #include #include #include #include #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 buffervoid clearBuf(char* b1){   int i;   for (i = 0; i 

file descriptor is not received!!

");   else   printf("

file descriptor %d is received

", sockfd1);   while (1) {      printf("

Please enter the name of file to receive:

");      scanf("%s", net_buf1);      sendto(sockfd1, net_buf1, Net_Buf_Size,      SendRecvFlag, (struct sockaddr*)&addr_con,      addrlen);      printf("

---------Data is Received---------

");      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("

-------------------------------

");   }   return 0;}

登录后复制

以上就是使用UDP进行文件传输的C程序的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2581921.html

(0)
上一篇 2025年3月6日 14:05:32
下一篇 2025年3月6日 14:05:38

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • 在C程序中,将由两个数组表示的两个数字相加

    数组表示的数字以这样的形式存储:该数字的每个数字都由数组的一个元素表示。例如, Number 234 in array is {2,3,4}. 登录后复制 为了增加这些数字,我们首先会在最低位数上相加数字,如果和大于10,则传递进位。在此之…

    2025年3月6日
    200
  • 寻找给定列表的中位数的C程序

    如果列表中的元素按顺序排列,则将列表中的元素分成两部分且两边元素数量相等的中间值称为中位数。 元素个数为奇数只有一个中间值;而;偶数个项目有两个中间值。 因此,偶数个项目的中位数被指定为两个中间值的平均值。 算法 请参考下面给出的算法来计算…

    2025年3月6日
    200
  • C++程序来检查一个字符是否为字母或非字母

    在解决一些逻辑编程问题时,使用字符串或字符有时非常有用。字符串是字符的集合,字符是 1 字节数据类型,用于保存 ASCII 值中的符号。符号可以是英文字母、数字或特殊字符。在本文中,我们将学习如何使用 C++ 检查一个字符是否是英文字母或字…

    2025年3月6日
    200
  • C程序乘以两个浮点数?

    Float是“浮点数”的缩写。按照定义,它是编译器内置的基本数据类型,用于定义具有浮动小数点的数值。浮点类型变量是可以保存实数的变量,例如4320.0、-3.33或0.01226。浮点数名称中的浮点部分指的是小数点可以“浮动”,即可以支持小…

    2025年3月6日
    100
  • 打印矩阵边界元素之和的C程序

    给定一个矩阵,我们需要打印矩阵的边界元素并显示它们的总和。 示例 参考下面给出的矩阵 – 给定矩阵 1 2 34 5 67 8 9 登录后复制 边界矩阵 1 2 34   67 8 9 登录后复制 边界元素之和:1 + 2 + …

    2025年3月6日
    200
  • 圆内内接十边形的C程序的面积?

    在这里,我们将了解如何获取圆内的十边形面积。半径已给出。十边形的边是“a”。 众所周知,十边形的边长如下 – 示例 #include #include using namespace std;float area(float r…

    2025年3月6日
    200
  • 递归冒泡排序的C程序

    冒泡排序是最简单的排序算法之一,用于通过比较相邻元素对数据进行排序。所有元素都分阶段进行比较。第一阶段将最大值放在最后,第二阶段将第二大元素放在倒数第二个位置,依此类推,直到完整列表排序完毕。 冒泡排序算法 int arr[5]= { 5,…

    2025年3月6日
    200
  • C程序使用结构体存储库存系统

    结构是不同数据类型变量的集合,以单一名称分组在一起。 结构的特征 C 语言中结构的特征编程语言如下 – 可以通过使用赋值将不同数据类型的所有结构元素的内容复制到其类型的另一个结构变量 为了处理复杂的数据类型,最好在另一个结构中创…

    2025年3月6日
    200
  • C程序以PGM格式写入图像

    pgm 是便携式灰度地图。如果我们想在 c 中将二维数组存储为 png、jpeg 或任何其他图像格式的图像,则在写入文件之前,我们必须做大量工作以某种指定的格式对数据进行编码。 Netpbm 格式提供了一种简单且便携的解决方案。 Netpb…

    2025年3月6日
    100
  • Rabin-Karp算法的C程序用于模式搜索

    C 中的模式匹配– 我们必须查找一个字符串是否存在于另一个字符串中,例如,字符串“algorithm”存在于字符串“naive algorithm”中。如果是找到,然后显示它的位置(即它所在的位置)。我们倾向于创建一个接收 2 …

    2025年3月6日
    200

发表回复

登录后才能评论