没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
试读
21页
合工大(合肥工业大学),电信工与电信科,通信网基础(计算机网络)优质实验报告,方便大家借鉴学习,冲刺高分。 计算机组成原理实验报告(两个个常用实验报告)分别是:(1)基于UDP的文件传输 (2)基于TCP的加密聊天系统设计 实验目的:1. 学习QQ聊天软件的技术架构。 2. 本实验的目的是让学生熟练掌握VS2013+Socket+RC4综合开发,基于VS2013+Socket+RC4实现简单的消息加密传输功能。 实验内容与要求: 1.创建的服务器端和客户端MFC工程名必须包含你的学号,其他形式一律0分!!!!! 2. 要求基于TCP实现通信,客户端对用户输入的消息利用RC4进行加密后,在界面上显示密文并将密文发送给服务器,服务器端接收到密文后,首先解密,然后将明文显示在界面上。
资源推荐
资源详情
资源评论
《通信网基础》实验报告
实验名称: 基于 UDP 的文件传输
专 业: 电子信息工程
学 号:
姓 名:
指导教师:
2019 年 11 月 14 日
一、实验目的
1.
学习
UDP
通信的机制。
2. 本实验的目的是让学生熟练掌握VS2013+Socket综合开发,基于UDP实现简
单的文件传输,分析
UDP
与
TCP
的异同。
二、实验环境
1. 硬件环境:PC机
2.
操作系统:
Windows
或
Linux
3. 开发平台:VS2013或QT
三、实验内容与要求
基于
UDP
实现
sunrise.mp3
文件(
>15M
)的传输,并测试接收到的文件与发送的
文件是否一致,检查接收端接收的mp3文件能否正确播放,以验证文件传输的完整
性。
基于vs2013创建一个Win32控制台应用程序工程,工程名必须包含自己的学号,
否则
0
分!
四、具体实现(代码只需按要求贴出关键函数即可,代码执行结果
需要抓图演示,每个图上必须要有学号,并给图片加上标号和标题。
电子版完成后发给班长统一打包提交。)
1. 发送端代码。(完整函数,包含学号)
int main()
{
WSADATA wsaData;
int ret = WSAStartup(MAKEWORD(2, 2), &wsaData);
//创建套接字
SOCKET servsock;
cout << "Create Socket..." << endl;
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_un.S_addr = inet_addr("127.0.0.1");
//将要发送的文件
char path[100] = { "D:\\homw\\Sunrise.mp3" };
printf_s("客户端即将发送 Sunrise 文件\n");
FILE* fp;
fopen_s(&fp, path, "rb");
if (!fp) {
printf_s("文件打开失败\n");
}
else
printf_s("文件已经打开等待传输\n");
//计算出长度
fseek(fp, 0, SEEK_END);
int size = ftell(fp);
fseek(fp, 0, SEEK_SET);
//while (1)
{
memset(buffer, 0, N);
cout << "文件正在传输......";
//把数据写入 buffer,每次写一个写 1024 次
fread(buffer, 1, N, fp);
int size2 = size;
ret = 0;
char l[100];
for (int i = 0; i <= 99; i++)
l[i] = 'k';
while (size2) {
l[ret++] = size2 % 10 + 48;
size2 /= 10;
}
//第一个串的长度 ret
int sb = sendto(servsock, l, ret, 0, (sockaddr*)&udpaddr, sizeof(udpaddr));
Sleep(50);
int num = 0;
int k = 15000;
int n1 = 0;
while (num < size) {
if (size - num < k)
k = size - num;
int n = sendto(servsock, buffer + num, k, 0, (sockaddr*)&udpaddr,
sizeof(udpaddr));
if (n == SOCKET_ERROR)
{
cout << "发送文件出现了错误" << endl;
closesocket(servsock);
WSACleanup();
return 0;
}
num += k;
Sleep(10);
n1 += 1;//传了多少次
}
//关闭连接
fclose(fp);
printf_s("客户端已经发送结束了\n");
closesocket(servsock);
WSACleanup();
return 0;
}
}
图
1
客户端代码实现效果图
2. 接收端代码。(完整函数,包含学号)
int main() {
WSADATA wsaData;
int ret = WSAStartup(MAKEWORD(2, 2), &wsaData);
//获取本机 IP 地址
char PCname[100] = { "" };
char *IPaddress = NULL;
gethostname(PCname, sizeof(PCname));
cout << "Local Hostname is" << PCname << endl;
struct hostent FAR * lpHostEnt = gethostbyname(PCname);
if (lpHostEnt == NULL) { //产生错误
printf_s("gethostbyname failed!\n");
return 0;
} //获取 IP
LPSTR lpAddr = lpHostEnt->h_addr_list[0];
if (lpAddr) {
struct in_addr inAddr;
memmove(&inAddr, lpAddr, 4); //转换为标准格式
IPaddress = inet_ntoa(inAddr);//将一个 32 位数字表示的 IP 地址转换成点分十进制 IP 地址
字符串
if (sizeof(IPaddress) == 0)
printf_s("get host IP failed!\n");
else
printf_s("Local HostIP is %s.\n", IPaddress); }
//创建套接字
SOCKET servsock, clisock;
printf_s("Create Socket...\n");
servsock = socket(AF_INET,SOCK_DGRAM,0 );//数据报套接字
int servport = 5555;
int iSockErr = 0;
//定义服务器地址结构
sockaddr_in udpaddr, cliaddr;
memset(&udpaddr, 0, sizeof(udpaddr));
memset(&cliaddr, 0, sizeof(cliaddr));
int udplen = sizeof(udpaddr);
int clilen = sizeof(cliaddr);
udpaddr.sin_family = AF_INET;
udpaddr.sin_port = htons(servport); //将一个点分十进制 IP 地址字符串转换成 32 位数字表示的
IP 地址
udpaddr.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");
//绑定套接字到服务器地址结构
printf_s("Binding...\n");
iSockErr = bind(servsock,(sockaddr*)&udpaddr,sizeof(udpaddr));
if (iSockErr == SOCKET_ERROR) {
printf_s("Binding failed:%d\n", WSAGetLastError());//根据不同的错误类型进行不同 的处理
return 0;
} //函数调用成功,进行其他处理
//准备开始传输文件的代码部分
char path[100] = {"E:\\temfile\\chuanshu.mp3"};
FILE* fp;
fopen_s(&fp, path, "wb");
剩余20页未读,继续阅读
资源评论
0810信通
- 粉丝: 0
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功