实验一网络通信基础一、实验目的熟悉应用VC6.0++环境,会创建单文档和基本对话框。
编写一个MFC应用程序,要求:单击鼠标左键,弹出对话框“Hello World!”;创建一个对话框,要求:单击鼠标左键,弹出对话框“Hello World!”;二、实验环境操作系统:Windows2000/XP编程软件:VC 6.0三、实验内容步骤:选择“File” “New” “Projects”选项卡,选中“MFC AppWizard(exe)”项,创建一个名为“Ex_HelloSDI”的单文档应用程序。
选择“View” “ClassWizard” “Message Maps”选项卡,“Project”选择“Ex_HelloSDI”,“Class name”选择“CEx_HelloSDIView”,“Object IDs”选择“CEx_HelloSDIView”,“Messages”选择“WM_LBUTTONDOWN”,单击“Add Function”,然后单击“Edit Code”。
添加代码MessageBox("Hello Word!","hello",MB_OK);四、实验结果五、思考题1.练习利用Windows API 函数和利用MFC创建窗口程序。
2.练习向应用程序添加鼠标、键盘、计时器消息。
实验二 网络通信一、实验目的学习网络通信编程的设计思想和设计步骤,设计一个网络聊天室程序。
二、实验环境操作系统:Windows2000/XP 编程软件:VC 6.0三、实验内容CAsyncSocket 类无连接的通信流程主要程序:(1) 在C***Dlg 类OnInitDialog()函数中添加代码:m_strRemoteName = "localhost"; m_iRemotePort = 6000; m_strSendData.Empty(); m_pConnectSocket = NULL; m_strLocalName = "localhost"; m_iLocalPort = 5000; UpdateData(false);GetDlgItem(IDC_BUTTON_SEND)->EnableWindow(false); GetDlgItem(IDC_BUTTON_CONNECT)->SetFocus();ConnSock.Create() ConnSock .Close()ConnectSock.Create()ConnectSock.Close()ConnSock.SendTo() ConnSock. ReceiveFrom()ConnectSock.SendTo() ConnectSock. ReceiveFrom()(2) 给Create Socket按钮添加代码:UpdateData(true);m_pConnectSocket = new CMySocket(this);if (!m_pConnectSocket->Create(m_iLocalPort,SOCK_DGRAM)){int n = WSAGetLastError();AfxMessageBox("创建套接字失败!");return;}((CButton *)GetDlgItem(IDC_BUTTON_SEND))->EnableWindow(true);((CButton*)GetDlgItem(IDC_BUTTON_CONNECT))->EnableWindow(f alse);(3) 给Send按钮添加代码:UpdateData(true);if (m_strSendData.IsEmpty()){AfxMessageBox("发送数据不能为空!");return;}UINT uchPort = (UINT)m_iRemotePort;m_pConnectSocket->SendTo(m_strSendData,m_strSendData.GetLength(), uchPort,m_strRemoteName);m_lstSent.InsertString(0,m_strSendData);m_strSendData.Empty();UpdateData(false);(4) 给对话框类添加OnReceive()函数,并添加代码:UpdateData(true);int nSize = 1024;char *pRev = new char[nSize+1];// 可在此,根据对端的ip地址进行相应的处理CString strName;UINT uchPort = 0;IntnRev=m_pConnectSocket->ReceiveFrom(pRev,nSize,strName,uchPort;if (nRev == SOCKET_ERROR){AfxMessageBox("套接字错误!");return;}pRev[nRev] = '\0'; // 必须,否则为乱码CString str = pRev;m_lstReceived.InsertString(0,str);delete []pRev;(5) 给Exit按钮添加代码:if (m_pConnectSocket!=NULL){m_pConnectSocket->Close();delete m_pConnectSocket;m_pConnectSocket = NULL;}this->SendMessage(WM_CLOSE,0,0);四、实验结果五、思考题1.在无连接的WinSock 通信中,如何获知接收到的数据来自哪个地址? 2.在面向连接的WinSock 通信中,如何获知接收到的数据来自哪个地址? 3.若要编程实现一个服务器和多个客户端通信,应该如何实现?实验三 网络通信(2)一、实验目的学习网络通信编程的设计思想和设计步骤,设计一个网络聊天室程序。
二、实验环境操作系统:Windows2000/XP 编程软件:VC 6.0三、实验内容CAsyncSocket 类面向连接的通信流程主要程序:首先声明两个CAsyncSocket 类的对象,作为主应用程序类的类成员变量,一个用于监听连接请求(服务器),一个用于被连接到另一个应用程序(客户机)。
假设监听套接字为m_ListenSock ,连接套接字为m_ConnectSock 。
(1) Create() :默认建立流式套接字 客户端: m_ConnectSock.Create(); 服务器端: m_ListenSock.Create(m_iPort); (2) Listen()服务器端侦听连接请求,参数默认为5,有效范围是从1~5。
m_ListenSock.Listen(); (3) Connect()ListenSock.Create()ListenSock.Listen()ListenSock.Accept()ConnSock.Close() ConnectSock.Create()ConnectSock.Connect()ConnectSock.Close(ConnSock.Send() ConnSock. Receive()ConnectSock.Send() ConnectSock. Receive()客户端申请与服务器的连接。
方法一:m_ConnectSock.Connect(“192.168.1.5”, m_iPort);方法二:m_ConnectSock.Connect(“Name”, m_iPort);(4) Accept()服务器端接受连接请求。
m_ListenSock.Accept(m_ConnectSock);(5) Send()和Receive()客户端发送、接收消息。
m_ConnectSock. Send(LPCTSTR(m_strMessage), iLen);m_ConnectSock. Receive(pBuf, iBufSize);(6) Close()客户端关闭连接。
m_ConnectSock.Close();四、实验结果实验四网络通信大作业一、实验目的设计网络通信程序,综合应用常用控件使用方法,window编程技术和socket通信技术,掌握完整的通信程序设计。
二、实验环境操作系统:Windows2000/XP编程软件:VC 6.0三、实验内容主要程序://1.初始化变量m_psockServer=new CTCPSocket(TCP_SOCKET_SERVER);m_psockClient=new CTCPSocket(TCP_SOCKET_CLIENT);//2.获取本机的IP和计算机名GetLocalHostName(m_strLocalName);GetIpAddress(m_strLocalName,m_strLocalIP);SetDlgItemText(IDC_EDIT_IP_LOCAL,m_strLocalIP);SetDlgItemText(IDC_EDIT_IP_REMOTE,m_strLocalIP);//3.设置端口m_nPortLocal=1234;m_nPortRemote=1234;CString Port;Port.Format("%d",m_nPortLocal);SetDlgItemText(IDC_EDIT_PORT_LOCAL,Port);Port.Format("%d",m_nPortRemote);SetDlgItemText(IDC_EDIT_PORT_REMOTE,Port);//4.初始化表头m_ctrlListConnections.InsertColumn(0,"IP",LVCFMT_LEFT,120,-1);m_ctrlListConnections.InsertColumn(1,"序号",LVCFMT_LEFT,50,-1);m_ctrlListConnections.SetExtendedStyle(LVS_EX_FULLROWSELECT);//5.状态变量m_bServerCreated=FALSE;m_bClientConnected=FALSE;m_nCurrentSelect=-1;四、实验结果指导教师评语: ———————————————————实验成绩:指导(辅导)教师 :。