文档详情

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

发布:2017-05-20约字共9页下载文档
文本预览下载声明
实验报告 成 绩 2015年6月 8 日 实验名称: 基于UDP的文件传输 1.实验目的 熟练 2.实验设备和条件 硬件环境:PC机 操作系统: Windows 或者 Linux 语言环境: Visual C++ ,VS,GCC,Java均可 3.实验要求 参考TCP文件传输demo, 基于UDP实现send.mp3文件的传输,并测试接收到的文件与发送的文件是否一致。 请各位同学于第15周星期三或星期四上课时将纸质版(双面打印)上交! 4.实验内容:测试数据与实验结果(可以抓图粘贴) #include stdafx.h #include Winsock2.h #include stdio.h #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);
显示全部
相似文档