4-320143X1《计算机网络原理》实验指导书(2)

2019-04-22 18:42

创建一个数据报式套接字可以如下所示:

SOCKET _socket=socket(AF_INET,SOCK_DGRAM,0);

注:在面向TCP的应用中我们应该创建一个流式套接字。

2)绑定bind

bind函数的原型:

int bind (SOCKET sockfd, const struct sockaddr *myaddr, socklen_t addrlen)

绑定是将一个套接字和一个套接字地址绑定在一起,在调用bind之前还必须设定服务器地址。如下可以设定一个服务器地址:

sockaddr_in serverAddress;; //定义地址结构体

serverAddress.sin_addr.S_un.S_addr= inet_addr(\//服务器ip地址 serverAddress.sin_family=AF_INET;

serverAddress.sin_port=htons(6000); //服务器端口,例如使用6000 下面的语句将套接字和地址serverAddress绑定在一起:

bind(sockSrv, (SOCKADDR*)& serverAddress, sizeof(SOCKADDR));

htonl=host to network long,就是把主机的字节顺序转化成网络上的字节顺序,参数为long int型;

同理htons=host to network short,只不过参数为short int型。

地址族必须为AF_INET,端口为6000,绑定的ip地址也可以用INADDR_ANY代替,表示可以用本机的任何IP地址。

bind命令绑定本地刚才创建好的socket。格式如上。 3)监听listen

listen函数的原型为:

int listen(SOCKET sockfd, int queue_length);

如下语句可以对一个套接字sockSrv进行监听: listen(sockSrv,5);

4)接受连接accept,接收/发送数据send/recv

sockaddr_in addrClient;

int len=sizeof(SOCKADDR);

char sendBuf[] = “TCP Server Demo!\\r\\n”;

SOCKET sockConnect=accept(sockSrv, (SOCKADDR*)&addrClient, &len); //接受客户端连接

if(sockConnect == INVALD_SOCKET) //如果连接不成功 { printf(“Failed accept!”); continue;

}

printf(\接受到一个连接:%s\//显示客户端的IP

//关闭连接套接字,终止通信

closesocket(sockConnect);

5

inet_ntoa函数转换Internet网络地址为点分十进制格式。 5)发送/接收数据send/recv

send(sockConnect,sendBuf,strlen(sendBuf)+1,0); //发送数据 recv(clientSocket,recvBuffer, strlen(recvBuffer),0); //接收数据 6)关闭监听套接字,终止服务器

closesocket(sockSrv);

(2)客户端: 1)创建连接套接字

SOCKET clientSocket=socket(AF_INET,SOCK_STREAM,0);

2)设置通信地址

struct sockaddr_in addrSrv;

addrSrv.sin_addr.S_un.S_addr=inet_addr(\表示连接服务器的IP addrSrv.sin_family=AF_INET; addrSrv.sin_port=htons(6000);

3)向服务器提出连接请求:

int con;

con = connect(clientSocket,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR));//连接服务器 if(con != 0){ //连接服务器失败

printf(\return 0; }

4)连接成功后,接收服务器端发送来的信息

char recvBuf[100]; int nRecv;

nRecv = recv(clientSocket,recvBuf,100,0); //接收服务端的数据 if(nRecv > 0) { recvBuf[nRecv] = ?\\0?;

printf(\接收到的数据:%s\\n\}

5)关闭套接字,终止通信

closesocket(sockClient);

4.项目简单演示

1)开启服务器端,等待客户端连接

6

2)开启客户端,可以开启多个,为了达到效果,可以再不同的机器上开启客户端 3)在客户端上点击“LINK”按钮,连接服务器。

4)开始聊天,只要连接上服务器的客户端都会收到聊天信息,相当于简单的群聊。

五、实验报告

1.完成本项目实验后,学生应提交实验报告。 2.实验报告格式与要求见附件。

7

实验2《NS2网络仿真实验》

实验学时: 2 每组人数: 1

实验类型: 2 (1:基础性 2:综合性 3:设计性 4:研究性) 实验要求: 2 (1:必修 2:选修 3:其它)

实验类别: 3 (1:基础 2:专业基础 3:专业 4:其它)

一、实验目的

1) 学生能够初步掌握NS2网络模拟平台,并且能够利用网络模拟平台进行简单的实验。 2) 学习采用距离矢量算法(Distance Vector Algorithm)的动态路由。

3) 加深对TCP 拥塞控制与流量控制机制的理解,并且能够为实验需要简单修改NS2 的核

心模块。

二、实验内容

本实验分为三个实验过程,NS2平台的坏境搭建、NS2网络路由协议的仿真以及要简单修改NS2 的核心模块。此外,在实验过程中需要同学们自学linux操作系统的安装和使用(可在虚拟机中安装linux,本实验指导书使用的VMware虚拟机中的ubuntu操作系统),熟悉linux下的软件开发过程(如vi编辑器,gcc编译器),熟悉Tcl和Otcl脚本语言,熟悉C++编程语言。

三、实验要求

1.了解NS2的基本原理 2.熟悉Tcl和Otcl脚本语言 3. 熟悉NS2的解不了模块

4. 根据实验指导书搭好实验必需的坏境 3. 按时上交实验报告。

四、实验步骤

1.NS2坏境搭建

(1)点击下载ns2的最新版本ns-allinone-2.35, 并解压到对应目录下。(也可以用命令解压:tar zxf ns-allinone-2.35.tar.gz 如果想看解压的输出过程:把\改为\。例如: $ tar zxvf ns-allinone-2.35.tar.gz(解压) $ sudo mkdir /usr/local/ns2(建立空文件夹) $ sudo mv ns-allinone-2.35 /usr/local/ns2(将ns2文件移动到新建的文件夹里) $ cd /usr/local/ns2/ns-allinone-2.35(转到ns2的文件夹中)

8

(2)下载并安装下一步ns-2.35时所必需的软件包:

$ sudo apt-get install build-essential $ sudo apt-get install tcl8.4 tcl8.4-dev tk8.4 tk8.4-dev $ sudo apt-get install libxmu-dev 当用apt-get更新软件包时常出现错误提示Unable to locate package update,解决方法是: 先更新apt-get #sudo apt-get update #sudo apt-get upgrade (3)输入cd 命令,转到ns-allinnone-2.35文件夹下,输入./install,进行安装。

按下回车键,同学们可以休息一会啦,这个过程大概需要5 分钟左右(具体时间关乎机器的性能),5 分钟之后大概出现如下提示:(不要关闭终端)

Please put /usr/local/ns-allinone-2.35/bin:/usr/local/ns-allinone-2.35/tcl8.5.10/unix:/usr/local/ns-allinone-2.35/tk8.5.10/unix into your PATH environment; so that you'll be able to run itm/tclsh/wish/xgraph. IMPORTANT NOTICES: (1) You MUST put /usr/local/ns-allinone-2.35/otcl-1.14, /usr/local/ns-allinone-2.35/lib, into your LD_LIBRARY_PATH environment variable. If it complains about X libraries, add path to your X libraries into LD_LIBRARY_PATH. If you are using csh, you can set it like: setenv LD_LIBRARY_PATH If you are using sh, you can set it like: export LD_LIBRARY_PATH= (2) You MUST put /usr/local/ns-allinone-2.35/tcl8.5.10/library into your TCL_LIBRARY environmental variable. Otherwise ns/nam will complain during startup. After these steps, you can now run the ns validation suite with cd ns-2.35; ./validate For trouble shooting, please first read ns problems page http://www.isi.edu/nsnam/ns/ns-problems.html. Also search the ns mailing list archive for related posts. (4)设置环境变量 Linux环境中设置环境变量有三种方式,临时设置,当前用户设置,系统坏境变量设置。在此处仅设置当前用户坏境变量。具体步骤如下:

9


4-320143X1《计算机网络原理》实验指导书(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:2017年中国科技核心期刊目录(自然科学卷)2017.10.31

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: