- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
主机字节序-东南大学自动化学院
实验四:聊天工具 实验目的 实验内容及要求 实验步骤 注意事项 实验目的 在前面两个实验的基础上进一步了解网络编程的过程。 掌握Windows环境下基于WinSock的编程方法和通讯实现。 编写一个聊天程序,即以客户端和服务器的模式进行互发消息。 back 实验内容及要求 利用MFC中的CAsyncsocket类已经集成了socket的基本函数,我们可以直接使用其成员函数来建立,初始化并应用socket,利用客户端和服务器模式,编写一个点对点的,可以相互发送和接收消息的程序,也就是常说的聊天工具。 该工具具有既可以作为服务器也可以做为客户端使用。 当作为服务器时要具有能输入自己的IP值和端口值,并能进行在线监听是否有客户端要求连接,如果有,还要能进行适当的响应,也就是接受连接请求建立连接,并实现消息互发。 当作为客户端是,要求能输入远地服务器的IP值和端口数,并进行连接请求,等待远地服务器的响应,当连接上后要能与服务器进行互发消息,聊天结束后还要实现与服务器的断开的功能。 back 实验步骤(1) 建立自己的socket类 使用MFC 中的CAsyncsocket类作为基类重载虚拟函数建立自己的socket类。 Eg.:class CMySocket : public CAsyncSocket 然后重载函数 void CMySocket::OnAccept() void CMySocket::OnClose() void CMySocket::OnConnect() void CMySocket::OnReceive() 这些函数系统会在有网络消息的时候自动调用它们,在下面的实验步骤(2)中提到要使用的函数就是在这些重载函数中调用的。(例子)我们还可以在这些函数中加入自己的代码,实现自己想要得功能。 最后还要在这个类中加入一个指向对话框类的指针作为成员变量,我们就是利用这个对话框类的成员函数来重载上面的虚拟函数的。 实验步骤(2) 使用的函数 服务器端: ?建立Socket:调用 成员函数Socket()函数 ?绑定端口:调用成员函数bind()函数 (注:对于MFC编程我们只要调用Create()函数就可以包括上面的两个函数) ? 监听:调用成员函数listen()函数 ? 服务器端接受客户端的连接请求:调用成员函数accept() 函数 ?结束 socket 连接 :调用成员函数closesocket() 客户端: ?建立客户端的 Socket :调用 socket() 函数 (注:我们也是调用Create()函数来完成Socket的建立的) ? 提出连接申请 :调用成员函数connect()函数 以上这些函数我们是在重载前面的虚拟函数时使用的,例如OnAccept()函数中调用accept() 函数等等。 实验步骤(3) 制作界面对话框类 使用的控件: List box,用于显示已发出和已接收的消息。 Combo box(or Radio button),用于模式选择,客户机或服务器。 Edit box,用于输入IP和端口。 Button,控制命令按钮。 注意:要在对话框类中添加两个我们自己的socket类作为成员变量。因为当作为服务器时要有两个套接字。一个用于侦听连接请求,一个用于被连接到另一个应用程序。当然作为客户机时只要一个套接字就可以了。 界面例子 back 注意事项(1) 两个MFC函数 BOOL AfxSocketInit( WSADATA* lpwsaData = NULL );这个函数中调用::WSAStartup在你的程序退出的时候自动调用::WSACleanup int WSAAsyncSelect( SOCKET s, HWND hWnd, unsigned int wMsg, long lEvent ); 当有网络事件发生时系统会通知窗口并调用对应的函数。我们要做的就是重载这些回调函数,加入我们要的指令实现我们要的功能。 创建工程时别忘了CWinApp::InitInstance ()函数中调用这个函数来初始化 注意事项(2) 消息发送函数int S
文档评论(0)