vc网络点对点聊天程序设计

上传人:新** 文档编号:464436897 上传时间:2023-06-09 格式:DOC 页数:6 大小:82KB
返回 下载 相关 举报
vc网络点对点聊天程序设计_第1页
第1页 / 共6页
vc网络点对点聊天程序设计_第2页
第2页 / 共6页
vc网络点对点聊天程序设计_第3页
第3页 / 共6页
vc网络点对点聊天程序设计_第4页
第4页 / 共6页
vc网络点对点聊天程序设计_第5页
第5页 / 共6页
点击查看更多>>
资源描述

《vc网络点对点聊天程序设计》由会员分享,可在线阅读,更多相关《vc网络点对点聊天程序设计(6页珍藏版)》请在金锄头文库上搜索。

1、vc+网络点对点聊天程序设计(1) 主要设计步骤:设计一个客户机端和服务器端,两者可以相互通信!客户机端:1) 创建客户机套接字(CREATE)2) 与远程服务器进行连接(CONNECT)3) 开始数据传输(SEND,RECEIVE)4) 关闭套接字(CLOSESOCKET)。服务器端:1) 创建服务器套接字(CREATE)。2) 服务器套接字进行信息绑定(BIND),并开始监听连接(LISTEN)。3) 接受来自客户端的连接请求(ACCEPT),并创建接受进程。4) 开始数据传送(SEND,RECEIVE)。5) 关闭套接字(CLOSESOCKET)。具体操作:1:选择应用程序,打开VC+软

2、件,然后想到会提示一些信息,此时,选择“MFCAPPWIARD(EXE)向导”此时选择基本对话框,然后单击下一步,在第二步应用向导中选择”WINDOWS SOCKETS”支持,然后单击下一步,按系统默认的点击下一步,知道完成为之.2:删除基本对话框出来的系统默认的控件类型,然后加入一个静态文本框,一个编辑框,一个连接按钮,一个发送按钮和 一个接受按钮。3.在文件StdAfx.h中的#endif前面一行加入两行代码包含Winsock相关头文件及连接相应的库文件.#include#pragma commment(lib,Winsock32)4.在对话框类的OnInitDialog()函数中初始化w

3、insock,3设置各个按钮的属性值和对象的成员变量。如下面的变量类型所示。4.为各个成员变量些写入代码。控件类型控件ID编辑框 edit1 IDC_EDIT_RECEIVE编辑框 edit2 IDC_EDIT_SEND按钮1 button1IDC_BUTTON1_CONNECT按钮2 button2IDC_BUTTON2_SEND按钮3 button3IDC_BUTTON3_RECEIVE按钮4 button4IDC_BUTTON1_DISCONNECT 程序主对话框控件对象对应的成员变量控件IDControl IDs变量名称Member Variable Name变量类型Category变

4、量类型Variable TypeIDC_EDIT_RECEIVEm_stareceiveValueCstringIDC_EDIT_SENDm_stasendValueCstringIDC_BUTTON1m_connectControlCButtonIDC_BUTTON2m_sendControlCButtonIDC_BUTTON3m_receiveControlCButtonIDC_BUTTON4m_disconnectControlCButton 编写代码:(1)建立连接服务器的代码:1)在对话框类的OnInitDialog()函数中初始化Winsock,将下面代码家独到CDialog:On

5、InitDialog();下面。CDialog:OnInitDialog();WSATA wsaData;WORD version=MAKEWORD(2,0);int ret=WSAStartup(version,&wsaData);if(ret!=0)TRACE(iitialize error.!);2)连接服务器,编辑连接按钮的相应函数,代码如下:Void C12Dlg:Onconnect() WSADATA wsaData; DWORD dwIPAddr; SOCKADDR_IN sockAddr; If(WSAStartup(MAKEWORD(2,0),&wsaData) Messag

6、eBox(“不能加载 Windows Sockets”,NULL,MB_OK); RETURN;m_hSocket(PF_INET,SOCK_STREAM,0);sockAddr.sin_family=AF_INET;/连接服务器的端口号sockAddr.sin_port=htons(5500);/服务器地址为本机sockAddr.sin_addr.S_un.S_addr=inet_addr(“127.0.0.1”);int nConnect=connect(m_hSocket,(LPSOCKADDR)&sockAddr,sizeof(sockAddr);if(nConnect) AfxMes

7、sageBox(“连接服务器出错!”); /禁用“发送数据”GetDlgItem(IDC_CONNECT)-Enable Window(FALSE);Return;/启用“发送按钮”GetDlgItem(IDC_CONNECT)-EnableWindow(TRUE);3)编辑发送按钮的时间相应函数,具体代码如下 Void C12ClientDlg:OnSend()If(m_hSock=INVALID_SOCKET) AfxMessageBox(“当前连接不可用,请先连接到服务器!”); return;Cstring strContent;/从编辑框中获取将要发送的内容GetDlgItem(ID

8、C_CONTENT)-GetWindow Text(strContent);If(strContent.IsEmpty() AfxMessageBox(“不能发送空信息!”); Return;strContent+=”n”;int nCharSend(m_hSocket.strContent,strContent.GetLength(),0);if(nCharSend=SOCKET_ERROR) MessageBox(“发送过程中出错!”,NULL,MB_OK);/清空编辑框strContent.Empty();GetDlgItem(IDC_CONTENT)-SetWindow Text(st

9、rContent);此时send所发送的内容是编辑框所显示的内容5) 为接收按钮的事件响应函数代码如下: Void C12ClientDlg:OnReceive()If(m_hSock=INVALID_SOCKET) AfxMessageBox(“当前连接不可用,请先连接到服务器!”); return;Cstring strContent;/从编辑框中获取将要发送的内容GetDlgItem(IDC_CONTENT)-GetWindow Text(strContent);If(strContent.IsEmpty() AfxMessageBox(“不能发送空信息!”); Return;strCo

10、ntent+=”n”;int nCharSend(m_hSocket.strContent,strContent.GetLength(),0);if(nCharSend=SOCKET_ERROR) MessageBox(“发送过程中出错!”,NULL,MB_OK);/清空编辑框strContent.Empty();GetDlgItem(IDC_CONTENT)-SetWindow Text(strContent);此时接收编辑框显示的内容为客户端发送过来的内容6) 为断开连接按的事件响应函数,代码如下 Void C12Dlg:OnDisconnect() If(m_hSocket!=INVAL

11、ID_SOCKET) /关闭套接字 Closesocket(m_hSocket) ; WSACleanup();(2) 使用应用程序向导生成一个基本对话框12Server,在第二步中向导选择“Windows Sockets”支持,使用对话框编辑框设计编辑框的内容控件类型控件ID编辑框 edit1 IDC_EDIT_RECEIVE编辑框 edit2 IDC_EDIT_SEND按钮1 button1IDC_BUTTON1_CONNECT按钮2 button2IDC_BUTTON2_SEND按钮3 button3IDC_BUTTON3_RECEIVE按钮4 button4IDC_BUTTON1_DI

12、SCONNECT 程序主对话框控件对象对应的成员变量控件IDControl IDs变量名称Member Variable Name变量类型Category变量类型Variable TypeIDC_EDIT_RECEIVEm_stareceiveValueCstringIDC_EDIT_SENDm_stasendValueCstringIDC_BUTTON1m_connectControlCButtonIDC_BUTTON2m_sendControlCButtonIDC_BUTTON3m_receiveControlCButtonIDC_BUTTON4m_disconnectControlCBu

13、tton1) 为服务器端接收按钮的事件响应函数,代码如下:Void C12ServeDlg:Onconnect() WSADATA wsaData; int iErrorCode; If(WSAStartup(MAKEWORD(2,0),&wsaData) MessageB(“不能加载 Windows Sockets”,AfxGerAppName(),MB_OKIMB_ICONSTOP); WSACleanup(); Return;m_hServerSocket=socket(PF_INET,SOCK_STREAM,0);if(m_hSocket=INVALID_SOCK);sockAddr.

14、sin_family=AF_INET; AfxMessageBox(“创建套接字出错!”);Return;/绑定端口m_socketServerAddr.sin_family=AF_INET;m_socketServerAddr.sin_addr.s_addr=inet_addr(“127.0.0.1”);m_socketServerAddr.sin_port=htons(5500);if(bind(m_hServerSocket,(LPSOCKADDR)&m_socketAddr,sizeof(m_sockServerAddr)=SOCKET_ERROR) AfxMessageBox(“无法绑定端口”); return;iErrorCode=WSAAsyncSekect(m_hSweverSocket,m_hWnd,WM_SERVER_ACCEPT,FD_ACCEPT);if(iErrorCode=SOCKET_ERROR) AfxMessageB

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 资格认证/考试 > 自考

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号