当前位置: 首页 > 编程日记 > 正文

Linux Linux程序练习十一(网络编程大文件发送UDP版)

//网络编程发送端--大文件传输(UDP)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <errno.h>#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>int main(int arg, char * args[])
{if (arg < 3){printf("please print two param ! \n");return -1;}int port = atoi(args[2]);int st = socket(AF_INET, SOCK_DGRAM, 0);if (st == -1){printf("create socket failed ! error message :%s\n", strerror(errno));return -1;}struct sockaddr_in addr;memset(&addr, 0, sizeof(addr));addr.sin_family = AF_INET;addr.sin_port = htons(port);addr.sin_addr.s_addr = inet_addr(args[1]);char buf[1024] = { 0 };int num = 0;//open the file streamFILE *pfr = NULL;int index=0;pfr = fopen("/home/test/2/1.dat", "r");if (pfr == NULL){printf("open the file failed ! error message :%s\n", strerror(errno));goto END;}while ((num = fread(buf, sizeof(char), sizeof(buf), pfr)) > 0){if (sendto(st, buf, sizeof(char)*num, 0, (struct sockaddr *) &addr,sizeof(addr)) == -1){printf("sendto failed ! error message :%s\n", strerror(errno));break;}printf("read %d num=%d\n",index++,num);}fclose(pfr);END: close(st);return 0;
}
//网络编程接收端--大文件传输(UDP)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <errno.h>#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>int main(int arg, char *args[])
{if (arg < 2){printf("please print one param ! \n");return -1;}int port=atoi(args[1]);int st = socket(AF_INET, SOCK_DGRAM, 0);if (st == -1){printf("create socket failed ! error message:%s \n",strerror(errno));return -1;}struct sockaddr_in addr;memset(&addr,0,sizeof(addr));addr.sin_family=AF_INET;addr.sin_port=htons(port);addr.sin_addr.s_addr=htonl(INADDR_ANY);if(bind(st,(struct sockaddr *)&addr,sizeof(addr))==-1){printf("bind IP failed ! error message:%s \n",strerror(errno));goto END;}struct sockaddr_in client_addr;socklen_t client_addrlen=sizeof(client_addr);char buf[1024]={0};int num=0;int index=0;//define the file streamFILE * pfa=NULL;//open the file in append modepfa=fopen("/home/test/3/1.dat","a");if(pfa==NULL){printf("open the file failed ! error message :%s\n",strerror(errno));goto END;}while(1){memset(&client_addr,0,sizeof(client_addr));num=recvfrom(st,buf,sizeof(buf),0,(struct sockaddr *)&client_addr,&client_addrlen);if(num==-1){printf("recvform failed ! error message :%s\n",strerror(errno));break;}/*就算发送端关闭,recvfrom函数也不会返回0,而是会继续阻塞进程*//*else if(num==0){printf("the other side socket is closed !\n");break;}*/printf("recv %d num=%d\n",index++,num);fwrite(buf,sizeof(char),num,pfa);if(num<1024){printf("recv last! \n");break;}memset(buf,0,sizeof(buf));}fclose(pfa);END:close(st);return 0;
}
.SUFFIXES:.c .o
CC=gcc
SRCS1=udprecv.c
SRCS2=udpsend.c
OBJS1=$(SRCS1:.c=.o)
OBJS2=$(SRCS2:.c=.o)
EXEC1=mrecv
EXEC2=msendstart:$(OBJS1) $(OBJS2)$(CC) -o $(EXEC1) $(OBJS1)$(CC) -o $(EXEC2) $(OBJS2)@echo "-------ok-----------"
.c.o:$(CC) -Wall -g -o $@ -c $<
clean:rm -f $(OBJS1)rm -f $(EXEC1)rm -f $(OBJS2)rm -f $(EXEC2)

小结:UDP传输协议确实会出现丢包的情况,远没有TCP/IP协议来的安全,根据上图可以看出。

转载于:https://www.cnblogs.com/zhanggaofeng/p/5887805.html

相关文章:

iic通信原理_电子知识之IIC通信原理和协议分享

IIC 的一些特征&#xff1a; 两条总线&#xff1a;串行数据总线(SDA)和串行时钟总线(SCL)真正的多主机总线连接到相同总线的ic数量只受到总线的最大电容400pF限制。串行8位双向数据在标准模式下可达100K bit/s快速模式400K bit/s,高速模式下3.4Mbit/s.数据有效性规定&#xff1…

以太坊核心概念

链客&#xff0c;专为开发者而生&#xff0c;有问必答&#xff01; 此文章来自区块链技术社区&#xff0c;未经允许拒绝转载。 以太坊虚拟机&#xff08;EVM&#xff09; 以太坊虚拟机&#xff08;EVM&#xff09;是以太坊中智能合约的运行环境。它不仅被沙箱封装起来&#…

使用rest_framework写api接口的一些注意事项(axios发送ajax请求)

1. 类继承GenericAPIView&#xff0c;定义queryset 印象深刻的事&#xff1a;由于原来对于继承关系不太清楚&#xff0c;写接口 APIView/泛指GenericAPIView不太关注queryset没有设置渲染器&#xff1a;默认 [JSONRenderer,BrowsableAPIRenderer]BrowsableAPIRenderer&#xff…

iir数字滤波器_手把手教系列之一阶数字滤波器设计实现(附代码)

[导读] 前面分享了 IIR/FIR/mean/梳状数字滤波器的具体设计实现&#xff0c;这几种使用起来或许觉得计算量大&#xff0c;相对复杂。实际工程应用中通常有必要过滤来自传感器或音频流的数据&#xff0c;以抑制不必要的噪声。有的应用场景&#xff0c;可能只需要一个最简单的一阶…

正则表达式中$1,$2 ===算是什么意思

$1,$2...是表示的小括号里的内容 $1是第一个小括号里的 ,$2是第2个小括号里的 比如 /gai([\w]?)over([\d])/ 匹配 gainover123 $1 括号里的 n $2 第2个括号里的 123转载于:https://www.cnblogs.com/vertko/p/5888902.html

为什么以太坊能成为区块链2.0的代表之作?

链客&#xff0c;专为开发者而生&#xff0c;有问必答&#xff01; 此文章来自区块链技术社区&#xff0c;未经允许拒绝转载。 区块链的学习进入到第四天&#xff0c;前三天学习比特币&#xff0c;分别从比特币的前世、货币属性和背后的区块链技术学习。 比特币是区块链的1…

(转)搭建企业内部yum仓库(centos6+centos7+epel源)

搭建企业内部yum仓库(centos6centos7epel源) 原文&#xff1a;https://www.cnblogs.com/nulige/p/6081192.html https://www.linuxidc.com/Linux/2017-11/148723.htm---------部署yum仓库与定制rpm包 1. 创建yum仓库目录mkdir -p /data/yum_data/cd /data/yum_data/#可以上传rp…

vs按f5没反应_《死神vs火影》中最受欢迎的游戏角色,仙鸣当之无愧上榜

hello&#xff01;大家好&#xff0c;又到了一日一度的杨某讲游戏环节啦&#xff0c;赶紧系好安全带&#xff0c;准备上车吧。《死神vs火影》作为一款深受广大群众欢迎的街机游戏&#xff0c;自然而然地涌现出了一系列知名游戏角色。那么&#xff0c;大多数人心目中最喜欢&…

IEC61850笔记--IEC61850应用入门(二)

IEC61850标准学习和调试&#xff0c;测试的记录文档&#xff0c;主要参考了IEC61850标准文档&#xff0c;《IEC61850应用入门(第二版)》&#xff0c;开源代码libIEC61850及libIEC61850说明文档。 IEC61850标准内容参考IEC61850标准文档&#xff0c;以及IEC61850标准介绍文档《I…

区块链赚钱的9种方式

链客&#xff0c;专为开发者而生&#xff0c;有问必答&#xff01; 此文章来自区块链技术社区&#xff0c;未经允许拒绝转载。 物联网火了一段时间&#xff0c;人工智能火了一段时间&#xff0c;无人驾驶火了一段时间。现在&#xff0c;通通被区块链的风头盖住了&#xff0c;都…

7、在对象内部尽量直接访问实例变量

本文概要&#xff1a; 1、首先给出结论是&#xff1a;除了几种特殊情况外&#xff0c;在读取实例变量的时候采用直接访问的形式&#xff0c;而在设置实例变量的时候通过属性来做。 2、讲解了使用getter、setter的好处。 3、列举了几种上面提到的特殊情况&#xff1a;有时不能使…

linux python2和python3共存_linux-Centos7安装python3并与python2共存

1.查看是否已经安装PythonCentOS 7.2 默认安装了python2.7.5 因为一些命令要用它比如yum 它使用的是python2.7.5。使用 python -V 命令查看一下是否安装Python然后使用命令 which python 查看一下Python可执行文件的位置可见执行文件在/usr/bin/ 目录下&#xff0c;切换到该目录…

9月20号作业

转载于:https://www.cnblogs.com/kangy123/p/5890515.html

区块链以太坊五大开发工具,你喜欢哪个?

链客&#xff0c;专为开发者而生&#xff0c;有问必答&#xff01; 此文章来自区块链技术社区&#xff0c;未经允许拒绝转载。 以太坊&#xff08;Ethereum&#xff09;是运行智能合约的最受欢迎的分布式平台之一。因为虚拟货币近年来的发展&#xff0c;以太坊以区块链为基础引…

sublime text 3 中改变.vue文件的颜色

1、按 CtrlShiftP 2、输入install&#xff0c;选择install Package 3、输入vue&#xff0c;选择 vue syntax hightlight 如果上述方法不起作用&#xff0c;可以选择在下面连接中下载文件&#xff0c;手动安装 如何让你的.vue在sublime text 3 中变成彩色? 转载于:https://www…

nodejs端口被占用。

I had the same issue. I ran: $ ps aux | grep node to get the process id, then: $ sudo kill -9 followed by the process id to kill the process.转载于:https://www.cnblogs.com/facial/p/5893138.html

戴尔电脑管家_2020年笔记本电脑推荐指南:笔记本电脑应该怎么选?什么牌子的笔记本电脑更值得入手?...

笔记本电脑已经成为家家户户必不可少的移动装置了&#xff0c;作为一名互联网行业从业者&#xff0c;无论是居家还是工作也得有一台性价比较高的笔记本&#xff0c;才能满足工作需要了。接下来&#xff0c;跟大家唠一唠笔记本电脑的那些事儿~我将从以下几个方面进行介绍&#x…

行走在区块链上的智能合约

链客&#xff0c;专为开发者而生&#xff0c;有问必答&#xff01; 此文章来自区块链技术社区&#xff0c;未经允许拒绝转载。 我和你打一个赌&#xff0c;我赌明天是雨天&#xff0c;你赌是晴天&#xff0c;赌注100大洋。假设明天是晴天&#xff0c;然后你跑过来管我要100大洋…

安装 telnet

yum install telnet-server yum install telnet service xinetd restart 查询是否正常启动telnet netstat -tnl |grep 23 telnet服务默认使用的23端口 转载于:https://www.cnblogs.com/gaobo543013306/p/8922021.html

python中json dumps_python中json.loads,dumps,jsonify使用

search_info {id:132,user_role:3}print type(search_info) #输出 #转为string用dumpsprint type(json.dumps(search_info)) #输出 #string转 dict用 loads()print type(json.loads(json.dumps(search_info))) #输出 如果前后台通过接口交互时&#xff0c;返回给前台json格式数…

区块链中的智能合约是什么?

链客&#xff0c;专为开发者而生&#xff0c;有问必答&#xff01; 此文章来自区块链技术社区&#xff0c;未经允许拒绝转载。 “智能合约是一套以数字形式定义的承诺&#xff0c;承诺控制着数字资产并包含了合约参与者约定的权利和义务&#xff0c;由计算机系统自动执行。”…

Python学习【第七篇】基本数据类型

基本数据类型 bytes数据类型 Python 3最重要的新特性大概要算是对文本和二进制数据作了更为清晰的区分。文本总是Unicode&#xff0c;由str类型表示&#xff0c;二进制数据则由bytes类型表示。Python 3不会以任意隐式的方式混用str和bytes&#xff0c;正是这使得两者的区分特别…

web项目答辩总结_web实战项目遇到问题总结探索

最近在写一个django的web项目&#xff0c;后端代码基本都已经写好了&#xff0c;主要是前端&#xff0c;以前学过一段前端&#xff0c;只是对一些基本的方法知道&#xff0c;但还有很多东西不熟练&#xff0c;问题是在遇到表单数据时候&#xff0c;如何对参数整体打包发送后端接…

iOS----------计算一段代码执行时间

CFAbsoluteTime start CFAbsoluteTimeGetCurrent(); //在这写入要计算时间的代码 // do something CFAbsoluteTime end CFAbsoluteTimeGetCurrent(); NSLog("%f", end - start);转载于:https://www.cnblogs.com/KiVen2015/p/8926265.html

区块链热度不减 应用风险不容忽视

链客&#xff0c;专为开发者而生&#xff0c;有问必答&#xff01; 此文章来自区块链技术社区&#xff0c;未经允许拒绝转载。 今年来&#xff0c;除了区块链本身之外&#xff0c;越来越多的业内人士也更加关注区块链在金融等方面的应用。 4月2日&#xff0c;由京东金融研究院…

POJ 3258:River Hopscotch (最大化最小值)

【题意】 牛要到河对岸&#xff0c;在与河岸垂直的一条线上&#xff0c;河中有N块石头&#xff0c;给定河岸宽度L&#xff0c;以及每一块石头离牛所在河岸的距离&#xff0c; 现在去掉M块石头&#xff0c;要求去掉M块石头后&#xff0c;剩下的石头之间以及石头与河岸的最小距离…

python获取文本光标_使用python readline时如何获取(并设置)当前bash光标位置?

我可以建议Python curses吗&#xff1f;The curses module provides an interface to the curses library, the de-facto standard for portable advanced terminal handling.While curses is most widely used in the Unix environment, versions are available for DOS, OS/2…

Gridview改变单元格颜色

if (e.Row.RowType DataControlRowType.DataRow) { e.Row.Cells[1].BackColor System.Drawing.Color.Red;//第二列的颜色 }转载于:https://www.cnblogs.com/objectxhy/p/5896970.html

区块链为什么这么热?有这么大热度的原因是什么

链客&#xff0c;专为开发者而生&#xff0c;有问必答&#xff01; 此文章来自区块链技术社区&#xff0c;未经允许拒绝转载。 区块链的热度是超乎想象的。 在上地和西二旗密集的写字楼办公空间里&#xff0c;年轻人三五成群聚在一起&#xff0c;在午饭后或散步或聚在茶水间…

使用nmonchart把.nmon文件转换成html

转载&#xff1a;https://blog.csdn.net/zd470015321/article/details/68923280 我的环境 :centos6.6 下载地址 nmon: http://nmon.sourceforge.net/pmwiki.php?nSite.Download nmon analyzer: https://www.ibm.com/developerworks/community/wikis/home?langen#!/wiki/Power…