资源简介
本文件为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个文件信息
相关资源
- Omron ETN21模块进行modbustcp通讯
- 使用选择性重传协议实现UDP可靠通信
- Openssl给文件传输加密
- 组态王中S7-300TCP驱动
- 基于Apache Mina实现的TCP长连接和短连接
- tftp文件传输工具
- CVI下的TCP服务器和客户端
- 代码客:G-TcpServer(IOCP) 1.0 正式版及
- 网络(UDP)转串口程序
- TCP 发包工具(windows)
- 用Socket写的简易FTP服务器和客户端
- VxWorks TCPIP协议栈
- socket小工具(可方便建立TCP UDP的soc
- UDP组播的发送和接收程序
- vc 编写的基于TCP协议的客户/服务器
- 基于CSocket的多人聊天室
- 采用WINSOCK2 编写的TCP/UDP通信程序
- socket文件传输源码
- Modbus TCP Client
- 易语言 TCP使用HTTP、SOCKES5代理IP。
- 西门子S7-1200 MODBUS-TCP通讯编程
- 200SMART Modbus-TCP通信程序演示-轮询(多
- TCP_UDP对结构体加密数据传输
- 基于PIC的TCP/IP网络协议和zigbee无线传
- 欧姆龙PLC tcp通信工具
- 欧姆龙以太网通讯TCP/UDP及欧姆龙PLC程
- 流媒体相关协议标准RTP/RTSP/RTCP PDF文档
- 航海模拟器中DCPA TCPA的算法
- UDP协议进行P2P打洞
- TCPMP 支持ce6.0的播放器
评论
共有 条评论