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

2019-04-22 18:42

《计算机网络》

课程实验指导书

廖志芳 编写

课程编号 320143X1 总 学 时 48 实验学时 6 课外学时 15

中南大学软件学院 2012年11月

实验1《Windows Socket编程》

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

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

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

一、实验目的

通过实验,使学生熟悉并掌握计算机Windows 编程的基本知识,进一步加深学生对课堂所学基本内容的理解,掌握基本的Windows编程技巧,通过实验使得学生能够进行一些简单的网络程序设计。

二、实验内容

1.介绍基本的Windows Socket编程技巧;

2.基于Windows Socket编程,设计并实现一个简单的聊天系统,包括客户端及服务器端。

三、实验要求:

1.按照实验内容和步骤完成各个实验; 2.在实验报告中要有详细地实验步骤以及结果; 3. 按时上交实验报告。

四、实验步骤

1.工程创建

在VC6中新建一个新工程,选择:Win32 Console Application,输入工程名。具体方法:启动VC6.0,单击【File】->【New】,如图1所示;

1

图1

(1)服务器端创建:然后在【新建工程】的对话框中的【Projects】选项卡中选择:Win32 Console Application,输入一个工程名及保存路径,点击【确定】,如图2所示;

图2

(2)客户端创建:在【新建工程】的对话框中的【Projects】选项卡中选择:MFC AppWizard[exe],输入一个工程名及保存路径,点击【确定】,选择“单文档模式”,完后确定完成,如图3所示,完成后新建一个主界面窗体,如图4所示。

图3

2

图4

2.Winsock初始化

在Windows环境下进行网络程序设计时,所有的Winsock函数都是从ws2_32.dll导出的,我们可以通过#pragma comment(lib, \语句链接到该库文件。但在使用Winsock函数之前还必须调用WSAStartup函数对库资源进行初始化工作,使用完毕后,在退出程序之前,我们还必须调用WSACleanup函数来释放库资源。为了便于程序的设计,我们先设计一个CInitSock类来管理WinSock库。在工程中添加新类的过程步骤如下:

1)在VC6.0环境中点击【insert】->【new a class】菜单;

2)在弹出的对话框中,选定class type为Generic Class,在Name输入框中输入类的名称CInitSock,然后点击确定即可。

在InitSock.h和InitSock.cpp添加代码,详细代码如下所示。 ////////////////////////////////////////////////////////////////////////////

// initSock.h // ////////////////////////////////////////////////////////////////////////////

#if !defined(AFX_INITSOCK_H__70EFFE09_9598_4C98_A067_29100702ACE8__INCLUDED_) #define AFX_INITSOCK_H__70EFFE09_9598_4C98_A067_29100702ACE8__INCLUDED_

#if _MSC_VER > 1000 #pragma once

#endif // _MSC_VER > 1000

#pragma comment(lib, \#include \

class CInitSock {

public: CInitSock();

3

virtual ~CInitSock(); }; #endif

// !defined(AFX_INITSOCK_H__70EFFE09_9598_4C98_A067_29100702ACE8__INCLUDED_)

//////////////////////////////////////////////////////////////////////

// InitSock.cpp: implementation of the CInitSock class. // //////////////////////////////////////////////////////////////////////

#include \

////////////////////////////////////////////////////////////////////// // Construction/Destruction

//////////////////////////////////////////////////////////////////////

CInitSock::CInitSock() { WSADATA wsaData; WORD sockVersion = MAKEWORD(2, 2); if(::WSAStartup(sockVersion, &wsaData) != 0) exit(0); }

CInitSock::~CInitSock() { ::WSACleanup(); }

然后在工程中新建一个.cpp的源文件,在这个源文件中填写主函数代码,并且在这个.cpp源文件的开始部分包含如下头文件:”initSock.h”和”stdio.h”,还申明一个CInitSock类对象,具体代码可如下所示: #include \#include \CInitSock initSock;

// 初始化Winsock库,对库资源进行初始化工作,释放资源

3.编程模式

(1)服务器端:

函数具体说明请参考MSDN或者讲义或者教材。 1)创建socket

Socket函数的原型为:

SOCKET socket(int family, int type, int protocol); 创建一个流式套接字可以如下所示:

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

4


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

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

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

马上注册会员

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