欢迎来到天天文库
浏览记录
ID:32553652
大小:86.80 KB
页数:5页
时间:2019-02-12
《基于tcp的网络聊天室的设计》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、基于TCP的网络聊天室的设计【基于TCP的网络聊天室的设计】-实验指导·一、实验目的1.掌握通信规范的制定及实现。2.练习较复杂的网络编程,能够把协议设计思想应用到现实应用中。1.二、实验内容和要求 1.进一步熟悉VC++6编程环境;2.利用VC++6进行较复杂的网络编程,完成网络聊天室的设计及编写; 三、实验(设计)仪器设备和材料1.计算机及操作系统:PC机,Windows;2.网络环境:可以访问互联网;·四、TCP/IP程序设计基础基于TCP/IP的通信基本上都是利用SOCKET套接字进行数据通讯,
2、程序一般分为服务器端和用户端两部分。设计思路(VC6.0下):第一部分 服务器端一、创建服务器套接字(create)。二、服务器套接字进行信息绑定(bind),并开始监听连接(listen)。三、接受来自用户端的连接请求(accept)。四、开始数据传输(send/receive)。五、关闭套接字(closesocket)。第二部分 客户端一、创建客户套接字(create)。二、与远程服务器进行连接(connect),如被接受则创建接收进程。三、开始数据传输(send/receive)。四、关闭套接字(
3、closesocket)。CSocket的编程步骤:(注意我们一定要在创建MFC程序第二步的时候选上WindowsSocket选项,其中ServerSocket是服务器端用到的,ClientSocket是客户端用的。)???(1)构造CSocket对象,如下例:CSocketServerSocket;CSocketClientSocket;(2)CSocket对象的Create函数用来创建WindowsSocket,Create()函数会自行调用Bind()函数将此Socket绑定到指定的地址上面。如下
4、例:ServerSocket.Create(823);//服务器端需要指定一个端口号,我们用823。ClientSocket.Create();//客户端不用指定端口号。(3)现在已经创建完基本的Socket对象了,现在我们来启动它,对于服务器端,我们需要这个Socket不停的监听是否有来自于网络上的连接请求,如下例:ServerSocket.Listen(5);//参数5是表示我们的待处理Socket队列中最多能有几个Socket。(4)对于客户端我们就要实行连接了,具体实现如下例:ClientSoc
5、ket.Connect(CStringSerAddress,UnsingedintSerPort);//其中SerAddress是服务器的IP地址,SerPort是端口号。(5)服务器是怎么来接受这份连接的呢?它会进一步调用Accept(ReceiveSocket)来接收它,而此时服务器端还须建立一个新的CSocket对象,用它来和客户端进行交流。如下例:CSocketReceiveSocket;ServerSocket.Accept(ReceiveSocket);(6)如果想在两个程序之间接收或发送信
6、息,MFC也提供了相应的函数。如下例:ServerSocket.Receive(String,Buffer);//String是你要发送的字符串,Buffer是发送字符串的缓冲区大小。ServerSocket.Send(String,Butter);//String是你要接收的字符串,Buffer是接收字符串的缓冲区大小。框架实现:客户端在MFC中创建对话框:voidCClientDlg::OnButtonReceive(){ CStringstrAddr="202.112.73.150"; unsig
7、nedintnPort=5050; if(!ChatReceive.Create()) { MessageBox("createfailed","Receive",MB_ICONSTOP); return; } else { ChatReceive.Connect(strAddr,nPort); }charsReceive[1024]; strAddr.Format(sReceive); ChatReceive.Receive(sReceive,1024,0); m_strEdit=sRec
8、eive; UpdateData(FALSE); ChatReceive.Close();}???服务器端创建对话框:voidCServerDlg::OnButtonSend(){ //TODO:Addyourcontrolnotificationhandlercodehere CStringstrSendText; unsignedintnPort=5050; GetDlgItemText(IDC_EDIT,strSendText); i
此文档下载收益归作者所有