• 大小: 7.48MB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2023-09-26
  • 语言: 其他
  • 标签: UDP  文件传输  TCP  

资源简介

本文件为TCP/IP课程作业,局域网中基于UDP协议的文件传输,本程序为dos窗口命令行操作,全部代码均为自己编写,无抄袭 文件中包含:源文件+可执行文件+实验报告

资源截图

代码片段和文件信息

#include
#include

#pragma comment(lib “WS2_32“)

#define DEFAULT_PORT 5050 // 服务器端口号为5050

char* strchop(char*  char);//获取路径中的文件名称
struct data_packet 
{
int size; //发送/接收的文件的大小
int dp_size; //一个数据包的大小
int id;   //数据包的标志
char data[1024];//数据包中的数据流
char name[100];//文件名称
};

void main(int argc char *argv[])
{
WSADATA wsaData;
SOCKET sClient;

if (WSAStartup(MAKEWORD(2 2) &wsaData) != 0) {
printf(“Failed to load Winsock.\n“);
return;
}

int iLen; // 服务器地址长度
int iSend;
struct data_packet csend_data = {0 0 0};
struct sockaddr_in ser; // 服务器端地址
// 建立客户端数据报套接口
sClient = socket(AF_INET SOCK_DGRAM 0);
if (sClient == INVALID_SOCKET) {
printf(“socket() failed: %d\n“ WSAGetLastError());
return;
}
FILE* cfile;
//获取文件名字
char* fpath = new char[100];
char* ip_addr = new char[30];
char yn;

printf(“输入接收方IP地址: \n“);
scanf(“%s“ ip_addr);

printf(“输入发送文件的路径: \n“);
scanf(“%s“ fpath);
while(!(cfile = fopen(fpath “rb“)))
{
printf(“文件路径不存在,请重新输入: \n“);
scanf(“%s“ fpath);
}

printf(“确定发送文件[y/n]:“);
scanf(“%c“ &yn);
scanf(“%c“ &yn);
//printf(“test“);
while(yn != ‘n‘ && yn != ‘y‘)
{
printf(“参数错误,请重新输入\n“);
printf(“确定发送文件[y/n]:“);
scanf(“%c“ &yn);
scanf(“%c“ &yn);
}
while(yn == ‘n‘)
{
printf(“输入接收方IP地址: \n“);
scanf(“%s“ ip_addr);

printf(“输入发送文件的路径: \n“);
scanf(“%s“ fpath);
while(!(cfile = fopen(fpath “rb“)))
{
printf(“文件路径不存在,请重新输入: \n“);
scanf(“%s“ fpath);
}
printf(“确定发送文件[y/n]:“);
scanf(“%c“ &yn);
scanf(“%c“ &yn);
while(yn != ‘n‘ && yn != ‘y‘)
{
printf(“参数错误,请重新输入\n“);
printf(“确定发送文件[y/n]:“);
scanf(“%c“ &yn);
}
}

char* fname = strchop(fpath ‘\\‘);
//printf(“fname: %s\n“ fname);
strcat(csend_data.name fname); 
fseek(cfile 0 SEEK_END);
csend_data.size = ftell(cfile);//获取发送文件的大小
csend_data.dp_size = 1024;//每个数据包大小为1024byte
rewind(cfile);

// 建立服务器端地址
ser.sin_family = AF_INET;
ser.sin_port = htons(DEFAULT_PORT);
ser.sin_addr.s_addr = inet_addr(ip_addr);
iLen = sizeof(ser);
// 向服务器发送数据
printf(“文件大小:%d\n“ ((csend_data.size / csend_data.dp_size) + 1));
printf(“文件发送中... \n“);
for(int i = 1; i <= ((csend_data.size / csend_data.dp_size) + 1); i++)
{
fread(csend_data.data sizeof(char) 1024 cfile);
csend_data.id = i;
iSend = sendto(sClient (char*)(&csend_data) sizeof(csend_data) 0 (struct sockaddr*)&ser iLen);
if (iSend == SOCKET_ERROR) {
printf(“sendto() failed: %d\n“ WSAGetLastError());
system(“pause“);
return;
}
else if (iSend == 0)
return;
else
{
 printf(“-“);
}
}
printf(“ 发送成功!\n“);
//system(“pause“);
//return;

char* recv_buf = new char[100];
memset(recv_buf 0 sizeof(char) * 100);
// 从服务器接收数据
int iRecv = recvfrom(sClient recv_buf sizeof(char) * 100 0 (struct sockaddr*)&ser &iLen);
if (iRecv == SOCKET_ERROR) {
printf(“rec

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2014-09-06 10:33  TCP_IP第一次实验_UDP\
     目录           0  2014-04-09 14:34  TCP_IP第一次实验_UDP\client\
     目录           0  2014-04-09 14:46  TCP_IP第一次实验_UDP\client\client\
     文件    10931200  2014-04-09 14:46  TCP_IP第一次实验_UDP\client\client.ncb
     文件         884  2014-04-06 11:55  TCP_IP第一次实验_UDP\client\client.sln
     文件        9728  2014-04-09 14:46  TCP_IP第一次实验_UDP\client\client.suo
     文件       37189  2014-04-05 12:44  TCP_IP第一次实验_UDP\client\client\1.JPG
     文件        3914  2014-04-06 11:56  TCP_IP第一次实验_UDP\client\client\client.vcproj
     文件        1411  2014-04-09 14:46  TCP_IP第一次实验_UDP\client\client\client.vcproj.idea-PC.user.user
     目录           0  2014-04-08 22:23  TCP_IP第一次实验_UDP\client\client\Debug\
     文件       17058  2014-04-08 22:23  TCP_IP第一次实验_UDP\client\client\Debug\BuildLog.htm
     文件         663  2014-04-06 11:56  TCP_IP第一次实验_UDP\client\client\Debug\client.exe.embed.manifest
     文件         728  2014-04-06 11:56  TCP_IP第一次实验_UDP\client\client\Debug\client.exe.embed.manifest.res
     文件         621  2014-04-08 22:23  TCP_IP第一次实验_UDP\client\client\Debug\client.exe.intermediate.manifest
     文件       34442  2014-04-08 22:23  TCP_IP第一次实验_UDP\client\client\Debug\main.obj
     文件          65  2014-04-08 22:23  TCP_IP第一次实验_UDP\client\client\Debug\mt.dep
     文件      437248  2014-04-08 22:23  TCP_IP第一次实验_UDP\client\client\Debug\vc90.idb
     文件      110592  2014-04-08 22:23  TCP_IP第一次实验_UDP\client\client\Debug\vc90.pdb
     文件        4053  2014-04-09 14:46  TCP_IP第一次实验_UDP\client\client\main.cpp
     文件      283728  2014-04-07 21:54  TCP_IP第一次实验_UDP\client\client\test_0_1.txt
     目录           0  2014-04-08 14:08  TCP_IP第一次实验_UDP\client\Debug\
     文件       31744  2014-04-08 22:23  TCP_IP第一次实验_UDP\client\Debug\client.exe
     文件      498728  2014-04-08 22:23  TCP_IP第一次实验_UDP\client\Debug\client.ilk
     文件      510976  2014-04-08 22:23  TCP_IP第一次实验_UDP\client\Debug\client.pdb
     目录           0  2014-04-09 14:32  TCP_IP第一次实验_UDP\server\
     目录           0  2014-04-08 14:08  TCP_IP第一次实验_UDP\server\Debug\
     文件       37888  2014-04-07 22:05  TCP_IP第一次实验_UDP\server\Debug\1.jpg
     文件       32256  2014-04-09 14:44  TCP_IP第一次实验_UDP\server\Debug\server.exe
     文件      487792  2014-04-09 14:44  TCP_IP第一次实验_UDP\server\Debug\server.ilk
     文件      494592  2014-04-07 22:01  TCP_IP第一次实验_UDP\server\Debug\server.pdb
     目录           0  2014-04-09 14:44  TCP_IP第一次实验_UDP\server\server\
............此处省略17个文件信息

评论

共有 条评论