VC++课程设计用WINSOCK实现聊天

上传人:仙*** 文档编号:30276196 上传时间:2021-10-10 格式:DOC 页数:5 大小:153.02KB
收藏 版权申诉 举报 下载
VC++课程设计用WINSOCK实现聊天_第1页
第1页 / 共5页
VC++课程设计用WINSOCK实现聊天_第2页
第2页 / 共5页
VC++课程设计用WINSOCK实现聊天_第3页
第3页 / 共5页
资源描述:

《VC++课程设计用WINSOCK实现聊天》由会员分享,可在线阅读,更多相关《VC++课程设计用WINSOCK实现聊天(5页珍藏版)》请在装配图网上搜索。

1、VC+程序设计 用WINSOCK实现聊天一:SOCKET简介 SOCKET实际在计算机中提供了一个通信端口,可以通过这个端口与任何一个具有SOCKET接口的计算机通信。应用程序在网络上传输,接收的信息都通过这个SOCKET接口来实现。在应用开发中就像使用文件句柄一样,可以对SOCKET句柄进行读,写操作。二:基于WINDOWS SOCKET的应用开发介绍。 在WINDOWS95/98,WINDOWSNT进行WINSOCK开发使用的编程语言有很多,VC+,JAVA,DELPHI,VB等。其中VC时使用最普遍,和WINSOCK结合最紧密的。并且VC+对原来的WindowsSockets库函数进行了

2、一系列封装,继而产生了CAsynSocket、CSocket、CSocketFile等类,它们封装着有关Socket的各种功能,是编程变得更加简单。但如果你是一个WINSOCK编程的初学者,那么建议你在一开始还是学习WINSOCK最基本的API函数进行编程,这样可以大大加深对WINSOCK的了解,对将来很有好处。 在VC中进行WINSOCK的API编程开发,需要使用到下面三个文件: 1 WINSOCK.H: 这是WINSOCK API的头文件。 2 WSOCK32.LIB: WINSOCK API连接库文件。在使用中,一点要把它作为项目的非缺省的连接库包含到项目文件中去。 3 WINSOCK.

3、DLL: WINSOCK的动态连接库,位于WINDOWS的安装目录下。WINSOCK接口在WINDOWS编程环境中的位置如下图所示:= 可以看到,WINSOCK。DLL位于TCP/IP协议栈和应用程序之间。也就是说,WINSOCK管理与TCP/IP协议的接口。在一开始WINSOCK的应有开发时,你不必对TCP/IP协议有很深刻的了解。但是,如果想成为一个为网络编程的高手,就一定要对下层了解得十分清楚。 在网络编程中最常用的方案便是客户机/服务器模型。在这种方案中客户应用程序向服务器程序请求服务。一个服务程序通常在一个众所周知的地址监听对服务的请求,也就是说,服务进程一直处于休眠状态,直到一个客

4、户对这个服务的地址提出了连接请求。在这个时刻,服务程序被“惊醒”并且为客户提供服务对客户的请求作出适当的反应。虽然基于连接协议(流套接字)的服务是设计客户机/服务器应用程序时的标准,但有些服务也是可以通过无连接协议(数据报套接字)提供的。其编程模型分别如下:面向连接协议的SOCKET编程模型=无连接协议的SOCKET编程模型= 一般在使用中,面向连接协议的SOCKET编程模型应用最为广泛,因为面向连接协议提供了一系列的数据纠错功能,可以保证在网络上传输的数据及时、无误地到达对方。 总的来说,使用SOCKET接口(面向连接或无连接)进行网络通信时,必须按下面简单的四步进行处理:1、程序必须建立一

5、个 SOCKET。2、程序必须按要求配置此SOCKET。也就是说,程序要么将此SOCKET连接到远方的主机上,要么给此SOCKET指定一个本地协议端口。3、程序必须按要求通过此SOCKET发送和接收数据。4、程序必须关闭此SOCKET。三:WINSOCK API主要函数简介 作者利用WINSOCK API 编写了一个具有聊天室功能的应用程序,可用作学习 WINSOCK 程序设计的参照。WINSOCK API 包括很多函数,但其中最常用,包括在文章所附源程序中的有:注:只是有关函数的简要说明,具体规则、说明请参见VC+帮助和WINSOCK规范。1、WSAStartup():连结应用程序与 Win

6、dows Sockets DLL 的第一个函数。 说明: 此函数是应用程序调用 Windows Sockets DLL函数中的第一个,也唯有此函数呼叫成功後,才可以再调用其他 Windows Sockets DLL 的函数。2、WSACleanup():结束 Windows Sockets DLL 的使用。 说明: 当应用程序不再需要使用 Windows Sockets DLL时,须调用此函数来注销使用,以便释放其占用的资源。3、 socket():建立Socket。 说明: 此函数用来建立一 Socket 描述字,并为此 Socket 建立其所使用的资源。4、 closesocket():关

7、闭某一Socket。 说明: 此一函数是用来关闭某一 Socket。5、 bind():将一本地地址与一个SOCKET描述字连接在一起。 说明:此函数在服务程序上使用,是调用监听函数listen()必须要调用的函数。6、 listen():设定 Socket 为监听状态,准备被连接。 说明: 此函数在服务程序上使用,来设定 Socket 进入监听状态,并设定最多可有多少个在未真正完成连接前的客户端的连接要求。(目前最大值限制为 5, 最小值为1)7、 accept():接受某一Socket的连接要求,以完成面向连接的客户端 Socket 的连接请求。 说明: 服务端应用程序调用此函数来接受客户

8、端Socket 连接请求,accept() 函数的返回值为一新的 Socket,新 Socket 就可用来在服务端和客户端之间的信息传递接收,而原来 Socket 仍然可以接收其他客户端的连接要求。8、 connect():要求连接某一Socket到指定的网络上服务端。 说明: 此函数用在客户端,用来向服务端要求建立连接。当连接建立完成後,客户端即可利用此 Socket 来与服务端进行信息传递。9、 recv():从面向连接的 Socket 接收信息。 说明: 此函数用来从面向连接的 Socket 接收信息。10、send():使用面向连接的 Socket 发送信息。 说明: 此函数用来从面向

9、连接的 Socket 发送信息。11、WSAAsyncSelect():要求某一 Socket 有事件 (event) 发生时通知使用者。 说明: 此函数用来请求Windows Sockets DLL 为窗口句柄发一条消息无论它何时检测到由lEvent参数指明的网络事件。要发送的消息由wMsg参数标明.被通知的套接口由s标识。本函数自动将套接口设置为非阻塞模式。 lEvent参数由下表中列出的值组成。 值 意义 FD_READ 欲接收读准备好的通知。 FD_WRITE 欲接收写准备好的通知。 FD_OOB 欲接收带边数据到达的通知。 FD_ACCEPT 欲接收将要连接的通知。 FD_CONNE

10、CT 欲接收已连接好的通知。 FD_CLOSE 欲接收套接口关闭的通知。这个函数可以认为是 WINSOCK API 中最为重要的一个函数。要想使用好这个函数,你必须对 WINDOWS 编程的事件驱动和消息传递有很清楚的了解。四:聊天室应用程序的设计说明:软件功能:Internet上可以提供一种叫IRC 的服务。使用者通过客户端的程序登录到IRC服务器上,就可以与登录在同一IRC服务器上的客户进行交谈,这也就是平常所说的聊天室。在这里,给出了一个在运行TCP/IP协议的网络上实现IRC服务的程序。软件使用说明:首先,在一台计算机上运行服务端程序,然后就可以在同一网络的其他计算机上运行客户端程序,

11、登录到服务器上,各个客户之间就可以聊天了。 软件设计要点: 1、服务端 核心代码在 CServerViwe 类中,有一个 SOCKET 变量 m_hServerSocket 和 SOCKET 数组 m_aClientSocketMAXClient(MAXClient:所定义的接收连接客户的最大数目),m_hServerSocket 用来在指定的端口(1000)进行侦听,如果有客户端请求连接,则在 m_aClientSocket 数组中查找一个空 socket,将客户端的地址赋予此 socket。每当一个 ClientSocket 接收到信息,都将会向窗口发一条消息。程序接收到这个消息后,再把接

12、收到的信息发送给每一个 ClientSocket。 2、客户端 客户端比较简单,核心代码在 CClientDlg 类中。只有一个 socket 变量 m_hSocket,与服务端进行连接。连接建立好后,通过此 SOCKET 发送和接收信息。 为了简化设计,用户名在客户端控制,服务器端只进行简单的接收信息和“广播”此信息,不进行名字校验,也就是说,可以有同名客户登录到服务端。这个程序设计虽然简单,但是已经具备了聊天室的最基本的功能。 程序在VC+ 6.0 下编译通过,在使用 TCP/IP 协议的 WINDOWS 95/98 对等局域网 和使用 TCP/IP 协议的 WINDOWS NT 局域网上运行良好。

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!