linux c 文件传输,linux下的文件传输C语言实现

linux下的文件传输C语言实现0

00e27ab806e4881f8254fe7ae8741834.pngRu来shen掌2017.05.03浏览37次分享举报

里面有一句代码 strncpy(file_name, buffer,strlen(buffer) > FILE_NAME_MAX_SIZE ?FILE_NAME_MAX_SIZE : strlen(buffer)); buffer是accept接受到的数据缓冲区,FILE宏定义为1024。 另外,这句代码是服务端的代码。为什么不是从file_name向buffer输送而是... 里面有一句代码

strncpy(file_name, buffer,strlen(buffer) > FILE_NAME_MAX_SIZE ?FILE_NAME_MAX_SIZE : strlen(buffer));

buffer是accept接受到的数据缓冲区,FILE宏定义为1024。

另外,这句代码是服务端的代码。为什么不是从file_name向buffer输送而是buffer向file_name输送(file_name是要给客户端的文件)。

源码一部分:

while(1)

{

struct sockaddr_in client_addr;

socklen_t length = sizeof(client_addr);

int new_server_socket = accept(server_socket, (struct sockaddr*)&client_addr, &length);

if (new_server_socket < 0)

{

printf("Server Accept Failed!\n");

break;

}

char buffer[BUFFER_SIZE];

bzero(buffer, sizeof(buffer)); //buffer置零

length = recv(new_server_socket, buffer, BUFFER_SIZE, 0);

if (length < 0)

{

printf("Server Recieve Data Failed!\n");

break;

}

char file_name[FILE_NAME_MAX_SIZE + 1];

bzero(file_name, sizeof(file_name));

strncpy(file_name, buffer,strlen(buffer) > FILE_NAME_MAX_SIZE FILE_NAME_MAX_SIZE : strlen(buffer));

FILE *fp = fopen(file_name, "r");

if (fp == NULL)

{

printf("File:\t%s Not Found!\n", file_name);

} 展开 对了,我是想问一下刚开始的那句strncpy里的第三个参数是什么意思,搜了一下好像是定义一个N,然后复制前N个字符,但这里有这么多,还有个strlen计数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值