资源简介
本文件为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.em
文件 728 2014-04-06 11:56 TCP_IP第一次实验_UDP\client\client\Debug\client.exe.em
文件 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个文件信息
相关资源
- DM9000A-fpga_UDP代码
- qt+opencv视频图像采集与基于tcp协议的
- 简单的远程抄表软件属于学术作品,
- 基于QtcpServer的网络库
- TCP/IP高级编程
- STM32F103+ W5500 USART转以太网 TcpServer
- Illustrated TCP/IP图文讲解TCP/IP协议-chm格
- STM32_MQTT_TCP.rar
- 简单的聊天程序 网络编程 UDP TCP
- S7-1500做服务器端与第三方设备TCP通信
- 安卓TCP服务端代码
- EC20建立一路SOCKT发数据_TCP透传命令切
- linux 使用jrtplib收发h.264视频文件
- TCP仿真(OPNET网络仿真实验).
- live555 RTSP RTCP RTP。live555类关系图,
- 基于udp的多功能聊天室
- 基于VS2010的CSocket网络文件传输
- 点对点文件传输课程设计
- usb2串口驱动(PL2303_Prolific_DriverInsta
- Winsock编写的TCP聊天
- TCP IP协议与网络编程 任泰明
- TCP 端口扫描
- UDP局域网连接
- modbus poll 9.4.0 & modbus slave7.3.0.rar
- TotalCommander插件集
- 移远EC20建立多路SOCKT发数据_TCP
- S7-1200 与 S7-300 CP343-1 TCP 通信例程大全
- STM32使用uip协议栈实现TCP数据传输源码
- iocp_file文件传输
- SuperSocket网络通信ClientEngine客户端部分
评论
共有 条评论