博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
c/c++ 网络编程 文件传输
阅读量:5139 次
发布时间:2019-06-13

本文共 2322 字,大约阅读时间需要 7 分钟。

网络编程 文件传输

1,文件发送端

2,文件接收端

文件发送端:

#include 
#include
#include
#include
#include
//结构体addrinfo, in_addr#include
#include
#include
#include
int main(int argc, char* argv[]){ char* service = "12345"; addrinfo hints, *res0, *res; int err; int sock; int fd; char buf[65536]; int n, ret; if(argc != 3){return 1;} fd = open(argv[2], O_RDONLY); if(fd < 0){ perror("open"); return 1; } memset(&hints, 0, sizeof(hints)); hints.ai_socktype = SOCK_STREAM; hints.ai_family = PF_UNSPEC;//既适应IPv4又适应IPv6 if((err = getaddrinfo(argv[1], service, &hints, &res0)) != 0){ printf("error %d:%s\n", err, gai_strerror(err)); return 1; } for(res = res0; res != NULL; res = res->ai_next){ sock = socket(res->ai_family, res->ai_socktype, res->ai_protocol); if(sock < 0){continue;} if(connect(sock, res->ai_addr, res->ai_addrlen) != 0){ close(sock); continue; } break; } freeaddrinfo(res0); if(res == NULL){ printf("failed\n"); return 1; } while((n = read(fd, buf, sizeof(buf))) > 0){ ret = write(sock, buf, n); if(ret < 1){ perror("write"); break; } } close(sock); return 0;}

发送端的执行方式:

./a.out 127.0.0.1 text.txt

文件接收端

#include 
#include
#include
#include
#include
//结构体addrinfo, in_addr#include
#include
#include
#include
int main(int argc, char* argv[]){ int sock0; sockaddr_in client; socklen_t len; int sock; addrinfo hints, *res; int err; int fd; int n, ret; char buf[65536]; if(argc != 2){return 1;} fd = open(argv[1], O_WRONLY | O_CREAT, 0600); memset(&hints, 0, sizeof(hints)); hints.ai_family = AF_INET; hints.ai_flags = AI_PASSIVE; hints.ai_socktype = SOCK_STREAM; err = getaddrinfo(NULL, "12345", &hints, &res); if(err != 0){ printf("error %d:%s\n", err, gai_strerror(err)); return 1; } sock0 = socket(res->ai_family, res->ai_socktype, 0); bind(sock0, res->ai_addr, res->ai_addrlen); freeaddrinfo(res); listen(sock0, 5); len = sizeof(client); sock = accept(sock0, (sockaddr*)&client, &len); while((n = read(sock, buf, sizeof(buf))) > 0){ ret = write(fd, buf, n); } close(sock); close(sock0); return 0;}

接收端的执行方式:

./a.out  textsave.txt

c/c++ 学习互助QQ群:877684253

1414315-20181010080448636-1575339451.jpg

本人微信:xiaoshitou5854

转载于:https://www.cnblogs.com/xiaoshiwang/p/9764267.html

你可能感兴趣的文章
让xamarin的Entry绑定时,支持Nullable类型
查看>>
linux 中安装JDK
查看>>
高精度加法和乘法
查看>>
SQL 语句的执行顺序
查看>>
SQL 参数化查询 应用于 Like
查看>>
[CareerCup] 2.3 Delete Node in a Linked List 删除链表的节点
查看>>
[LeetCode] Find K Pairs with Smallest Sums 找和最小的K对数字
查看>>
左右轮播无缝效果
查看>>
HTML 链接是通过 <a> 标签进行定义的
查看>>
Cocos2d Box2D之静态刚体
查看>>
UDP和TCP两种协议的传输数据长度分析
查看>>
ppt 例题8 多重背包2
查看>>
倒序--逆序=2
查看>>
Java中的Nested Classes和Inner Classes
查看>>
自动创建文件夹的两种方法
查看>>
graphviz入门
查看>>
[Js-Java SE]异常结构继承图
查看>>
信度不达标的处理方式
查看>>
微信小程序数据处理
查看>>
50个有用的快捷键,提示与蜱虫你应该知道
查看>>