基于UDP的文件传输实验报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验报告

成 绩

2015年6月 8 日 课程名称 《数据库技术》 学生姓名 *** 学 号 ******** 专业班级 电子信息工程 指导教师

实验名称:基于UDP的文件传输

1.实验目的

(1)熟练掌握Socket编程;

(2)分析UDP与TCP的异同。

2.实验设备和条件

硬件环境:PC机

操作系统:Windows 或者Linux

语言环境:Visual C++ ,VS,GCC,Java均可

3.实验要求

参考TCP文件传输demo, 基于UDP实现send.mp3文件的传输,并测试接收到的文件与发送的文件是否一致。

请各位同学于第15周星期三或星期四上课时将纸质版(双面打印)上交!

4.实验内容:测试数据与实验结果(可以抓图粘贴)

(1)发送端代码。

#include"stdafx.h"

#include

#include

#define MAX_LENGTH 1024

int_tmain(int argc, _TCHAR* argv[])

{

WORD wVersionRequested;

WSADATA wsaData;

wVersionRequested = MAKEWORD(2, 2);

if (WSAStartup(wVersionRequested, &wsaData) != 0)//初始化ws2_32.dll动态库

{

printf("WSAStartup() failed!\n");//Winsock初始化错误

exit(-1);

}

if (wsaData.wVersion != wVersionRequested)

{

printf("The version of Winsock is not suited!\n");//Winsock版本不匹配WSACleanup();//结束对ws2_32.dll的调用

exit(-2);

}

//说明ws2_32.dll正确加载

printf("Load ws2_32.dll successfully!\n");

//创建套接字

SOCKET servsock;

printf("Create Socket...\n");

servsock = socket(AF_INET, SOCK_DGRAM, 0);//数据报套接字

int servport = 5555;

int iSockErr = 0;

//定义服务器地址结构

sockaddr_in udpaddr;

int len = sizeof(udpaddr);

memset(&udpaddr, 0, sizeof(udpaddr));

udpaddr.sin_family = AF_INET;

udpaddr.sin_port = htons(servport);

//将一个点分十进制IP地址字符串转换成32位数字表示的IP地址udpaddr.sin_addr.s_addr = inet_addr("172.16.4.94");////INADDR_ANY

//读取mp3文件

FILE *fp = NULL;

errno_t err;

err = fopen_s(&fp, "七里香.mp3", "rb");

if (fp == NULL){

printf("Open File Failed!\n");

getchar();

exit(-5);

}

char buffer[MAX_LENGTH] = "\0";

char *bufptr = buffer;

int i = 0;

while (!feof(fp))

{

int iBytesRead = fread(bufptr, 1, MAX_LENGTH, fp);

int iRet = sendto(servsock, buffer, sizeof(buffer), 0, (struct sockaddr*)&udpaddr, len);

if (iRet != SOCKET_ERROR)

{

iRet = recvfrom(servsock, buffer, sizeof(buffer), 0, (struct sockaddr*)&udpaddr, &len);

}

else

{

printf("send file failed!\n");

break;

}

if (iRet == SOCKET_ERROR)

{

//closesocket(clisock);

printf("send file failed!\n");

break;

}

else if (iRet == 0)

{

printf("send mp3 file successfully!\n");

break;

}

if (iBytesRead == 0)

{

printf("send mp3 file successfully!\n");

break;

}

//printf("%d", &len);

printf("send packet %d lenth: %d\n", i++, iBytesRead);

Sleep(10);

}

sendto(servsock, "", 0, 0, (struct sockaddr*)&udpaddr, len);

相关文档
最新文档