资源简介
(1) 在发送端模拟数据从高层到低层的封装过程,在接收端模拟数据从低层到高层的解封装过程;
(2) 按照每层的功能对数据填加报头,并显示每一层得到的封/解装格式;
(3) 传输层和网络层的封装格式参考TCP/IP的相应各层协议格式;
(4) 网络层的IP报文需要模拟报文分段和重组的过程;
(5) 数据链路层帧格式参考局域网的MAC帧格式;
(6) 物理层显示为0或1比特串。
代码片段和文件信息
//需要在连接器中加入-lwsock32
#include
#include
#include
#include
#include
#include “head.h“
#pragma comment(lib “ws2_32.lib“) //加载 ws2_32.dll
using namespace std;
#define MAXSIZE 10000
#define MYPORT 5000
/*int input(char a[]){
gets(a);
return 0;
}*/
int main(){
//初始化DLL
WSADATA wsaData;
WSAStartup(MAKEWORD(2 2) &wsaData);
printf(“If you want to eixtplease input exit and press enter \n“);
sleep(2);
//创建套接字
SOCKET sock_cli = socket(PF_INET SOCK_STREAM IPPROTO_TCP);
//向服务器发起请求
sockaddr_in sockAddr;
//memset(&sockAddr 0 sizeof(sockAddr)); //每个字节都用0填充
sockAddr.sin_family = PF_INET;
sockAddr.sin_addr.s_addr = inet_addr(“198.168.123.1“);
sockAddr.sin_port = htons(MYPORT);
//connect(sock_cli (SOCKADDR*)&sockAddr sizeof(SOCKADDR));
if(connect(sock_cli (SOCKADDR*)&sockAddr sizeof(SOCKADDR))<0)
{
printf(“connect error!\n“);
exit(1);
}
//接收服务器传回的数据
char buffer[MAXSIZE] = {0};
recv(sock_cli buffer MAXSIZE 0);
printf(“***SERVER***%s“buffer);
//输出接收到的数据
printf(“Message form server: %s\n“ buffer);
//循环发送消息给服务端,当发送exit时系统自动退出
while(1)
{
char mymsg[MAXBYTE];
//printf(“you can chat with server now:\n“);
string data;
cout<<“请输入你想要传输的数据: “< cin>>data;
Applayer app;
app.appboudling(data);
app.show();
Tralayer tra;
tra.Traboudling(app);
tra.show();
Netlayer net;
net.Netboudling(tra);
net.show();
Datalinklayer Datalink;
Datalink.Databoudling(net);
Datalink.show();
Phylayer phy;
phy.Phyboudling(Datalink);
phy.show();
//input(mymsg);
phy.message.copy(mymsgstr.length()0); //这里5,代表复制几个字符,0代表复制的位置
mymsg[str.length()]=‘\0‘ ;//要手动加上结束符str.length()
send(sock_climymsgstrlen(mymsg)+sizeof(char)0);
/*
recv函数中的bufferlength参数是可以固定值的
send函数中的bufferlength参数不能固定值,需要看实际长度,并且考虑到‘\0‘字符串
*/
if(strcmp(mymsg“exit\n“)==0)
break;
}
//关闭套接字
closesocket(sock_cli);
//终止使用 DLL
WSACleanup();
system(“pause“);
return 0;
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 736 2016-12-13 22:50 Project1\Appla
文件 971 2016-12-13 23:32 Project1\Appunla
文件 2465 2016-12-20 20:11 Project1\client.cpp
文件 1235 2016-12-13 16:11 Project1\Datali
文件 495 2016-12-13 22:47 Project1\Dataunli
文件 176 2016-12-13 12:07 Project1\head.h
文件 1850 2016-12-13 16:11 Project1\Netla
文件 537 2016-12-13 22:49 Project1\Netunla
文件 745 2016-12-13 20:51 Project1\Phyla
文件 386 2016-12-13 22:48 Project1\Phyunla
文件 520 2016-12-13 11:57 Project1\sender.cpp
文件 1024161 2016-12-20 19:57 Project1\sender.exe
文件 35775 2016-12-20 19:57 Project1\sender.o
文件 1145 2016-12-13 23:17 Project1\server.cpp
文件 1022357 2016-12-20 20:03 Project1\server.exe
文件 31351 2016-12-20 20:03 Project1\server.o
文件 2589 2016-12-20 20:11 Project1\server1.cpp
文件 339 2017-12-17 17:01 Project1\str.cpp
文件 957602 2017-12-17 17:01 Project1\str.exe
文件 2329 2017-12-17 17:01 Project1\str.o
文件 1145294 2016-12-14 17:05 Project1\thread.exe
文件 193669 2016-12-14 17:05 Project1\thread.o
文件 1905 2016-12-13 16:12 Project1\Trala
文件 589 2016-12-13 22:48 Project1\Traunla
目录 0 2017-12-17 17:01 Project1
----------- --------- ---------- ----- ----
4429221 25
- 上一篇:进程间通信之管道通信
- 下一篇:存储器设计
评论
共有 条评论