云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > 计算机网络技术实验指导书

计算机网络技术实验指导书

  • 62 次阅读
  • 3 次下载
  • 2025/6/15 15:21:09

图5-3 server及client编程流程

2、实验步骤

两个同学作为一组,一个同学的PC作服务器,一个同学的PC作客户端。 (1)服务器端PC实验进行步骤:

1)按照附录建立server项目工程文件;;

2)编译连接以生成server.exe:选择Build->Build server.exe或Rebuild all选项(或者按下F7键盘按键),VC即自动执行编译连接工作;

3)在所生成的server文件夹中的Debug文件夹中,把可执行文件server复制到一分区盘的根目录下(如D盘),在MS-DOS窗口中,在对应路径下执行server:

4)程序执行后即进入等待客户连接的状态,此时等待客户端PC连接即可;

5)客户端PC执行程序连接后,窗口会有相应结果显示,此时分别记录服务器端、客户端的程序运行实验结果。

6)阅读源代码server.c和client.c,结合实验结果理解总结网络编程的基本模式;

7)理解源代码的基础上进行扩展练习:在代码中改动服务器端端口配置,给服务器一个确定端口号的端口 。改动server.c后重新编译连接以生成server.exe(见上面的2)说明),待客户端PC改动client.c后按照以上步骤3)、4)、5)重新执行应用程序。

43

**参考代码:server.sin_port = htons(atoi(\

**htons的作用--The htons function converts a u_short from host to TCP/IP network byte order

**atoi的作用--Convert strings to integer

(2)客户端PC实验进行步骤:

1)与建立server项目工程文件步骤类似,按照附录建立client项目工程文件;

2) 编译连接以生成client.exe:选择Build->Build client.exe或Rebuild

all选项(或者按下F7键盘按键),VC即自动执行编译连接工作; 3) 在client文件夹中的Debug文件夹中,把可执行文件client复制到一分区盘的根目录下(如D盘)。询问服务器端PC的IP地址和运行后server.exe后所打印出的端口号以备执行client时作参数使用。在MS-DOS窗口中,在对应路径下执行程序,命令行格式为:client 服务器IP地址 服务器端口号

4)执行程序后出现Input sending information的提示;此时通过键盘输入要发送的信息,输完后按回车键结束即可;

5)发送后记录本机发送信息和在服务器端出现的实验结果。

6)阅读源代码server.c和client.c,结合实验结果理解总结网络编程的基本模式;

7)理解源代码的基础上进行扩展练习:

a. 在程序代码中指定确定的服务器IP地址,以省去以命令行运行时的服务器IP地址选项,使改动后运行客户端程序命令为:client 服务器端口号。改动client.c后重新编译连接以生成client.exe(见上面的2)说明),待服务器端的server.exe执行后按照以上步骤3)、4)、5)重新执行应用程序。

**参考代码:server.sin_addr.s_addr=inet_addr(atoi(\另需把设置端口号的代码argv[2]改为argv[1]

b. 在服务器端指定确定的端口号后,试在代码中指定连接的确定服务器端

口号,以进一步省去以命令行运行时的服务器端口号选项,即改动后运行客户端程序命令为:client

**参考代码:server.sin_port = htons(atoi(\

【附录】使用VC创建server和client项目文件的步骤

1、启动Visual Studio 6.0中的Vc6.0;

2、选择File(文件)->New(新建)->Project; 3、选择Win32 console application;

44

4、选择要创建此工程项目的位置,在Project name中输入server,VC会在相应路径下建立一server的文件夹以包括所有此项目的文件,选择OK;

5、在跳出的对话框中选择an empty project,以生成不包括任何源文件的工程项目;

6、新建源代码文件server.c:选择File->New->Files->C++ source File,输入文件名server.c,单击OK确定,并在文件中输入服务器端代码: #include #include #define TRUE 1

/* 这个程序建立一个套接字,然后开始无限循环;*/

/*每当它通过循环接收到一个连接,则打印出一个信息。*/

/*当连接断开,或接收到终止信息,则此连接结束,程序再接收一个新的连接。*/

/*命令行的格式是:server */ main( ) {

int sock, length;

struct sockaddr_in server; struct sockaddr tcpaddr; int msgsock; char buf[1024]; int len;

/* 建立套接字 */

WORD wVersionRequested; WSADATA wsaData; int err;

wVersionRequested = MAKEWORD( 2, 2 );

err = WSAStartup( wVersionRequested, &wsaData ); //初始化套接字环境 sock = socket(AF_INET, SOCK_STREAM, 0); //创建套接字 if (sock < 0) {

perror(\ exit(1); }

/* 使用任意端口命名套接字 */

server.sin_family = AF_INET; //使用协议,此处为IP协议

server.sin_port = INADDR_ANY; //服务器监听端口,此处定义为任意可用端口

server.sin_addr.s_addr=INADDR_ANY; //服务器使用IP地址,此处定义为任意可以IP地址

if (bind(sock, (struct sockaddr *)&server, sizeof(server)) < 0) { perror(\ exit(1); }

/* 找出指定的端口号并打印出来,若上面定义服务器端口时指定一确定值则

45

可不用此段代码 */

length = sizeof(server);

if (getsockname(sock, (struct sockaddr *)&server, &length) < 0) { perror(\ exit(1); }

printf(\ /* 开始接收连接 */ listen(sock, 5);

len = sizeof(struct sockaddr); do { msgsock = accept(sock, (struct sockaddr *)&tcpaddr, (int *)&len); //等待客户端连接请求,阻塞直到有请求来为止 printf(\和一个客户端建立了一个新的连接 memset(buf, 0, sizeof(buf)); //初始化缓冲区(全部置0) recv(msgsock, buf,sizeof(buf),0); //接收客户端来的信息

printf(\ //打印接收到的信息 closesocket(msgsock); } while (TRUE);

/* 因为这个程序已经有了一个无限循环,所以套接字\从来不显式关闭。然而,当进程被杀死或正常终止时,所有套接字都将自动地被关闭。*/ exit(0); }

7、把server.c加入此工程项目中:选择Project->add to project->Files ,在弹出的对话框中找到server.c,选中此文件,点击加入即可。

8、加入支持winsock的链接库:选择Project->settings,在弹出的对话框中选择link属性设置界面,在界面中的object/library modules中的最后输入加入的库文件Ws2_32.lib,选择OK返回。

9、编译连接以生成server.exe:选择Build->Build server.exe或Rebuild all选项,VC即自动执行编译连接工作。

10、 可执行程序即在生成的server文件夹中的Debug文件夹中。

使用VC编译连接client过程与此相同。其中client.c文件代码如下: #include #include

/* 此客户端程序与服务器进行连接,并发送键盘输入的信息到服务器*/ /*命令行运行格式为:client 服务器IP地址 端口号*/ main(argc, argv) int argc;

char *argv[ ]; {

int sock; WORD wVersionRequested; WSADATA wsaData;

struct sockaddr_in server;

46

char data[1024]; printf(\ gets(data); //用键盘输入发送的信息 // 建立套接字 wVersionRequested = MAKEWORD(2, 2);

WSAStartup(wVersionRequested, &wsaData ); //初始化套接字环境

sock = socket(AF_INET, SOCK_STREAM, 0); //创建套接字 /* 使用命令行中指定的名字连接套接字 */ server.sin_family = AF_INET;

server.sin_addr.s_addr=inet_addr(argv[1]); //连接的服务器IP地址 server.sin_port = htons(atoi(argv[2])); //连接的服务器端口地址 connect(sock, (struct sockaddr*)&server, sizeof(server)); //发起连接

send(sock, data, sizeof(data),0); //发送数据到服务器 closesocket(sock); //关闭套接字 exit(0); }

五、实验报告要求

1、简述实验目的和实验原理;

2、详细描述实验过程,分析实验结果。 3、思考并回答以下问题:

端口的作用是什么?在本实验中是如何体现端口的作用的? 4、总结本实验主要结论。

47

搜索更多关于: 计算机网络技术实验指导书 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

图5-3 server及client编程流程 2、实验步骤 两个同学作为一组,一个同学的PC作服务器,一个同学的PC作客户端。 (1)服务器端PC实验进行步骤: 1)按照附录建立server项目工程文件;; 2)编译连接以生成server.exe:选择Build->Build server.exe或Rebuild all选项(或者按下F7键盘按键),VC即自动执行编译连接工作; 3)在所生成的server文件夹中的Debug文件夹中,把可执行文件server复制到一分区盘的根目录下(如D盘),在MS-DOS窗口中,在对应路径下执行server: 4)程序执行后即进入等待客户连接的状态,此时等待客户端PC连接即可; 5)客户端PC执行程序连接后,窗口会有相应结果显示,此时分

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com