网络程序设计课程设计论文.docx
- 文档编号:3228391
- 上传时间:2022-11-20
- 格式:DOCX
- 页数:14
- 大小:187.54KB
网络程序设计课程设计论文.docx
《网络程序设计课程设计论文.docx》由会员分享,可在线阅读,更多相关《网络程序设计课程设计论文.docx(14页珍藏版)》请在冰豆网上搜索。
网络程序设计课程设计论文
广西工学院
课程设计说明书
课题名称TCP/IP协议与网络编程
系别计算机工程系
专业通信工程
班级通信062班
学号200600402048
姓名蔡昭金
指导教师周坚和
20010年1月6日
目录
一、摘要3
二.目的3
三.内容3
四.原理3
4.1套接口3
4.2套接口编程原理4
4.3TCP/IP应用程序工作模型4
4.4WindowsTCP/IP实现原理5
五.设计过程6
5.1设计流程图..........................................................................................6
5.2VC++网络编程及WindowssocketAPI简介..................................6
5.3Windowssocket机制分析................................................................7
六、聊天室程序的设计说明7
七.核心代码与结果分析8
八.小结12
九.结束语12
十、参考文献13
一、摘要
用VC++6.0的SocketsAPI实现一个聊天室程序。
综合运用本课程及计算机网络的相关知识设计并实现一个简单的聊天室程序,以VisualC++作为开发平台,通过实践复习巩固课堂所学的理论知识,提高对所学知识的综合应用能力。
关键词:
VC++6.0、SocketsAPI、聊天室程序。
二、目的
综合运用本课程及计算机网络的相关知识设计并实现一个简单的聊天室程序,以VisualC++作为开发平台,通过实践复习巩固课堂所学的理论知识,提高对所学知识的综合应用能力。
三、内容
基本要求:
采用客户/服务器模式,分为客户端程序和服务器端程序。
服务器采用WINSOCKI/O模型中的任一种,支持多个客户同时在线聊天。
客户端程序和服务器程序通过网络交换聊天字符串内容,服务器窗口的列表框中显示当前在线用户,支持客户端之间的私聊。
4、原理
4.1套接口(Socket)
WindowsSocketsAPI依靠套接口(Socket)进行通信。
套接口可以看成是两个网络应用程序进行通信时,各自通信连接中的一个端点。
通信时,其中的一个网络应用程序将要传输的一段信息写入它所在主机的Socket中,该Socket通过网络接口卡(NIC)的传输介质将这段信息发送到另一台主机的Socket中,使这段信息能传送到其他程序中,如下图所示。
4.2套接口编程原理
该过程可以分为以下几个阶段(以电话通信为例说明):
(1)电信局必须要有一个电话总机,相当于套接口通信机制中提供服务的服务器。
在Socket中通过调用socket()函数来开启一个服务,即创建一个提供服务的套接口。
(2)电信局必须给电话总机分配一个号码(如114,即查号服务的号码是114),以便用户通过拨该号码得到电话服务,同时接入该电信局的用户必须知道该总机的号码。
(3)电信局114查号台下会开设一些自动服务的分机,但是它们的数量是有限的。
总机开通后就一直在监听(listen)用户的拨号,用户拨打114时,可能拨通,得到服务;也可能拨不通,就会听到忙音。
同样,我们在建立一个Socket服务时,也会调用listen( )函数来监听客户的请求。
(4)对于用户来说,如果知道电信局的查号号码,在想得到查号服务时就可以拨打114,请求得到电信局的服务,这相当于在客户端要进行的操作。
(5)电信局的总机接受了某用户拨打的电话后,负责把用户与一个分机连通,而总机本身则又回到等待状态,等待其他客户的请求。
(6)服务完成后,挂上电话,线路断开,一次服务过程结束,否则该线路将一直被占用,浪费了通信资源。
在服务器和客户之间,最后也要使用closesocket( )函数关闭套接口,释放该套接口上的有关资源,这可以由通信的任何一方或双方同时提出。
4.3TCP/IP应用程序工作模型
使用TCP/IP协议的网络,其协议核心内容在层次结构的低三层,即网络接口层、IP层和传输层,而这三层的功能一般是由操作系统的内核来实现的。
任何能够与WindowsSockets兼容实现协同工作的应用程序都被认为是具有WindowsSockets接口的,称这种应用程序为WindowsSockets应用程序。
应用程序通过调用WindowsSockets的API实现它们之间的相互通信。
WindowsSockets又利用下层的网络通信协议功能和操作系统调用来实现实际的通信工作。
如图下所示的是两台主机的进程间通过网络编程接口进行通信的原理图。
上图所示的是使用TCP/IP协议网络的典型应用方式,即客户/服务器模式。
通过上图还要弄清楚一个问题,网络程序设计其实是使用系统提供的网络协议完成用户程
的功能,即在网络应用程序中使用网络协议提供的服务,而不是让用户去实现网络协议各
的功能。
4.4WindowsTCP/IP实现原理
5、设计过程
5.1设计流程图
并发TCP服务器---
每客户单线程模型
5.2VC++网络编程及WindowsSocketsAPI简介
VC++对网络编程的支持有socket支持,WinInet支持,MAPI和ISAPI支持等。
其中,WindowsSocketsAPI是TCP/IP网络环境里,也是Internet上进行开发最为通用的API。
最早美国加州大学Berkeley分校在UNIX下为TCP/IP协议开发了一个API,这个API就是著名的BerkeleySocket接口(套接字)。
在桌面操作系统进入Windows时代后,仍然继承了Socket方法。
在TCP/IP网络通信环境下,Socket数据传输是一种特殊的I/O,它也相当于一种文件描述符,具有一个类似于打开文件的函数调用-socket()。
可以这样理解:
Socket实际上是一个通信端点,通过它,用户的Socket程序可以通过网络和其他的Socket应用程序通信。
Socket存在于一个"
通信域"(为描述一般的线程如何通过Socket进行通信而引入的一种抽象概念)里,并且与另一
个域的Socket交换数据。
Socket有三类。
第一种是SOCK_STREAM(流式),提供面向连接的可靠的通信服务,比如telnet,http。
第二种是SOCK_DGRAM(数据报),提供无连接不可靠的通信,比如UDP。
第三种是SOCK_RAW(原始),主要用于协议的开发和测试,支持通信底层操作,比如对IP和ICMP的直接访问。
5.3WindowsSocket机制分析
5.3.1一些基本的Socket系统调用
主要的系统调用包括:
socket()-创建Socket;bind()-将创建的Socket与本地端口绑定;connect()与accept()-建立Socket连接;listen()-服务器监听是否有连接请求;send()-数据的可控缓冲发送;recv()-可控缓冲接收;closesocket()-关闭Socket。
5.3.2WindowsSocket的启动与终止
启动函数WSAStartup()建立与WindowsSocketsDLL的连接,终止函数WSAClearup()终止使用该DLL,这两个函数必须成对使用。
5.3.3异步选择机制
Windows是一个非抢占式的操作系统,而不采取UNIX的阻塞机制。
当一个通信事件产生时,操作系统要根据设置选择是否对该事件加以处理,WSAAsyncSelect()函数就是用来选择系统所要处理的相应事件。
当Socket收到设定的网络事件中的一个时,会给程序窗口一个消息,这个消息里会指定产生网络事件的Socket,发生的事件类型和错误码。
5.3.4异步数据传输机制
WSAAsyncSelect()设定了Socket上的须响应通信事件后,每发生一个这样的事件就会产生一个WM_SOCKET消息传给窗口。
而在窗口的回调函数中就应该添加相应的数据传输处理代码。
六、聊天室程序的设计说明
6.1实现思想
在Internet上的聊天室程序一般都是以服务器提供服务端连接响应,使用者通过客户端程序登录到服务器,就可以与登录在同一服务器上的用户交谈,这是一个面向连接的通信过程。
因此,程序要在TCP/IP环境下,实现服务器端和客户端两部分程序。
6.2服务器端工作流程
服务器端通过socket()系统调用创建一个Socket数组后(即设定了接受连接客户的最大数目),与指定的本地端口绑定bind(),就可以在端口进行侦听listen()。
如果有客户端连接请求,则在数组中选择一个空Socket,将客户端地址赋给这个Socket。
然后登录成功的客户就可以在服务器上聊天了。
6.3客户端工作流程
客户端程序相对简单,只需要建立一个Socket与服务器端连接,成功后通过这个Socket来发送和接收数据就可以了。
七、核心代码与结果分析
7.1服务器端代码
开启服务器功能:
voidOnServerOpen()//开启服务器功能
{WSADATAwsaData;
intiErrorCode;
charchInfo[64];
if(WSAStartup(WINSOCK_VERSION,
&wsaData))//调用WindowsSocketsDLL
{MessageBeep(MB_ICONSTOP);
MessageBox("Winsock无法初始化!
",
AfxGetAppName(),MB_OK|MB_ICONSTOP);
WSACleanup();
return;
}
Else
WSACleanup();
if(gethostname(chInfo,sizeof(chInfo)))
{ReportWinsockErr("无法获取主机!
");
return;
}
CStringcsWinsockID="
==>>服务器功能开启在端口:
No.";
csWinsockID+=itoa(m_pDoc->m_nServerPort,chInfo,10);
csWinsockID+="";
PrintString(csWinsockID);//在程序视图显示提示信息的函数
m_pDoc->m_hServerSocket=socket(PF_INET,
SOCK_STREAM,DEFAULT_PROTOCOL);
//创建服务器端Socket,类型为SOCK_STREAM,面向连接的通信
if(m_pDoc->m_hServerSocket==INVALID_SOCKET)
{ReportWinsockErr("无法创建服务器socket!
");
return;
}
m_pDoc->m_sockServerAddr.sin_family=AF_INET;
m_pDoc->m_sockServerAddr.sin_addr.s_addr=INADDR_ANY;
m_pDoc->m_sockServerAddr.sin_port=htons
(m_pDoc->m_nServerPort);
if(bind(m_pDoc->m_hServerSocket,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 网络程序设计 课程设计 论文
![提示](https://static.bdocx.com/images/bang_tan.gif)