资源简介
计算机网络试验,TCP文件传输的设计与实现,要传输的文件放在Debug文件夹下,cmd调用或者.exe文件使用

代码片段和文件信息
////////////////////////////////////////
// 文件传送客户端 小文件123.txt 编号2号客户端
////////////////////////////////////////
#include
#include
#include
// 定义发送缓冲区大小
#define MAX_DATA_BLOCK_SIZE 8192
void error_exit(const char * msg int val);
void send_file(const char * file_name const char * ip u_short port);
// 主函数
int main(int argc char ** argv) {
u_short port;
if (argc == 3) {
// 如果不指定服务器端口,那么默认为 8888
send_file(argv[1] argv[2] 8888);
print_socket_detail(argv[1]);
} else if (argc == 4) {
// 用户指定了服务器端口
port = (u_short) atoi(argv[1]);
if (port == 0) {
error_exit(“非法的服务器端口“ -1);
} else {
send_file(argv[1] argv[2] port);
}
} else {
error_exit(“参数错误“ -1);
}
return 0;
}
void print_socket_detail(SOCKET s){
struct sockaddr_in name;
int namelen;
namelen = sizeof(name);
memset(&name0namelen);
getsockname(s(struct sockaddr*)&name&namelen);
printf(“peer: %s:%d\n“inet_ntoa(name.sin_addr)ntohs(name.sin_port));
}
// 打印错误、使用说明并退出程序
void error_exit(const char * msg int val) {
if (msg) {
printf(“%s\n\n“ msg);
}
printf(“使用方法:ft_client <文件名> <服务器 IP 地址> [服务器端口]\n“);
printf(“服务器端口是可选参数,默认为 8888\n\n“);
exit(val);
}
// 发送文件到服务器
void send_file(const char * file_name const char * ip u_short port) {
WSADATA wsaData;
SOCKET s;
FILE * fp;
struct sockaddr_in server_addr;
char data[MAX_DATA_BLOCK_SIZE];
int i;
int ret;
fp = fopen(file_name “rb“);
if (fp == NULL) {
printf(“无法打开文件\n“);
return;
}
WSAStartup(0x202 &wsaData);
// 创建套接字
s = socket(AF_INET SOCK_STREAM 0);
// 填写服务器的地址结构
memset((void *)&server_addr 0 sizeof(server_addr));
server_addr.sin_family = AF_INET;
server_addr.sin_addr.s_addr = inet_addr(ip);
server_addr.sin_port = htons(port);
// 连接到服务器,注意观察是如何处理连接失败的
if (connect(s (struct sockaddr *)&server_addrsizeof(server_addr)) == SOCKET_ERROR) {
printf(“连接服务器失败\n“);
fclose(fp);
closesocket(s);
WSACleanup();
return;
}
// 首先发送文件名以及标志文件名结束的\0
printf(“发送文件名...\n“);
send(s file_name strlen(file_name) 0);
send(s “\0“ 1 0);
// 然后发送文件内容
// 注意观察缓冲区 data 是如何使用的,以及 fread、send 函数的返回值是如何处理的
printf(“发送文件内容“);
for (;;) {
memset((void *)data 0 sizeof(data));
i = fread(data 1 sizeof(data) fp);
if (i == 0) {
printf(“\n 发送成功\n“);
break;
}
ret = send(s data i 0);
putchar(‘.‘);
if (ret == SOCKET_ERROR) {
printf(“\n 发送失败,文件可能不完整\n“);
break;
}
}
fclose(fp);
closesocket(s);
WSACleanup();
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2019-03-28 19:02 TCP文件传输的设计与实现\
目录 0 2019-03-28 19:01 TCP文件传输的设计与实现\11.26\
目录 0 2019-03-28 19:01 TCP文件传输的设计与实现\11.26\test\
目录 0 2019-03-28 19:01 TCP文件传输的设计与实现\11.26\test\client\
文件 0 2018-11-25 22:02 TCP文件传输的设计与实现\11.26\test\client\123.txt
目录 0 2019-03-28 19:01 TCP文件传输的设计与实现\11.26\test\client\bin\
目录 0 2019-03-28 19:01 TCP文件传输的设计与实现\11.26\test\client\bin\Debug\
文件 39038 2018-11-26 09:01 TCP文件传输的设计与实现\11.26\test\client\bin\Debug\client.exe
文件 0 2018-11-26 08:35 TCP文件传输的设计与实现\11.26\test\client\bin\Debug\ly.txt
文件 1212 2018-11-28 16:41 TCP文件传输的设计与实现\11.26\test\client\client.cbp
文件 267 2018-11-27 13:04 TCP文件传输的设计与实现\11.26\test\client\client.depend
文件 356 2018-11-28 16:41 TCP文件传输的设计与实现\11.26\test\client\client.layout
文件 3080 2018-11-27 13:04 TCP文件传输的设计与实现\11.26\test\client\main.c
目录 0 2019-03-28 19:01 TCP文件传输的设计与实现\11.26\test\client\obj\
目录 0 2019-03-28 19:01 TCP文件传输的设计与实现\11.26\test\client\obj\Debug\
文件 6223 2018-11-27 13:04 TCP文件传输的设计与实现\11.26\test\client\obj\Debug\main.o
目录 0 2019-03-28 19:01 TCP文件传输的设计与实现\11.26\test\server\
文件 0 2018-11-26 11:58 TCP文件传输的设计与实现\11.26\test\server\123.txt
目录 0 2019-03-28 19:01 TCP文件传输的设计与实现\11.26\test\server\bin\
目录 0 2019-03-28 19:01 TCP文件传输的设计与实现\11.26\test\server\bin\Debug\
文件 38076 2018-11-26 08:51 TCP文件传输的设计与实现\11.26\test\server\bin\Debug\server.exe
文件 4480 2018-11-27 20:54 TCP文件传输的设计与实现\11.26\test\server\main.c
目录 0 2019-03-28 19:01 TCP文件传输的设计与实现\11.26\test\server\obj\
目录 0 2019-03-28 19:01 TCP文件传输的设计与实现\11.26\test\server\obj\Debug\
文件 6749 2018-11-27 20:54 TCP文件传输的设计与实现\11.26\test\server\obj\Debug\main.o
文件 1161 2018-11-25 20:50 TCP文件传输的设计与实现\11.26\test\server\server.cbp
文件 361 2018-11-26 11:54 TCP文件传输的设计与实现\11.26\test\server\server.depend
文件 358 2018-11-27 20:58 TCP文件传输的设计与实现\11.26\test\server\server.layout
目录 0 2019-03-28 19:01 TCP文件传输的设计与实现\11.26\多线程\
目录 0 2019-03-28 19:01 TCP文件传输的设计与实现\11.26\多线程\client\
目录 0 2019-03-28 19:01 TCP文件传输的设计与实现\11.26\多线程\client\bin\
............此处省略36个文件信息
相关资源
- 04741计算机网络原理知识点整理.docx(
- 校园网络规划与设计课程设计
- SOCKET 网络编程 计算机网络 作业 客户
- 计算机网络课程设计—ARQ协议模拟实
- 计算机网络第五版 严伟
- 计算机网络(第6版)谢希仁教学课件
- 计算机网络自顶向下方法答案(第六
- 计算机网络管理员国家职业标准
- 计算机网络精讲视频教程
- 计算机网络 第7版 谢希仁 高清完美书
- 计算机网络(第5版)(Computer Networ
- 计算机网络课程设计 小型企业的
- 北航研究生计网实验报告.rar
- 计算机网络校园网课程设计
- 计算机网络24分游戏课设完整版
- 计算机网络(谢仁希第五版)课后答
- 计算机网络课程设计—设计一个校园
- 计算机网络第六版 教学视屏 网盘
- 计算机网络第7版谢希仁复习题完整版
- 计算机网络讲义-陈鸣
- 东北大学计算机网络期末试题+答案
- 计算机网络打作业实现QQ.zip
- 哈尔滨工业大学深圳 高级计算机网络
- 计算机网络(第七版).谢希仁
- 计算机网络socket编程实验
- 计算机网络谢仁希PPT教案
- 网络普及背景下的计算机网络安全问
- 2.5 SDNv2.pdf-中科大高级计算机网络课件
- 计算机网络课程设计: 基于P2P的局域
- 哈工大计网mooc答案,包含测验和期末
评论
共有 条评论