vc实现简单聊天工具实践

vc实现简单聊天工具实践

ID:9302520

大小:82.00 KB

页数:5页

时间:2018-04-27

vc实现简单聊天工具实践_第1页
vc实现简单聊天工具实践_第2页
vc实现简单聊天工具实践_第3页
vc实现简单聊天工具实践_第4页
vc实现简单聊天工具实践_第5页
资源描述:

《vc实现简单聊天工具实践》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、显然大家都用过QQ等聊天工具,也或许有想弄明白其中的工作原理,学过编程的朋友或许还会希望自己也能设计出一款差不多的程序软件。在这里我根据孙鑫老师讲的VC教程,整理出来了一个程序,不敢说我对这方面弄得很明白,只是将我实现这个软件的过程向有需要的朋友介绍下,如果恰好能给予方便,自是倍感安慰,权当闲暇之余的消遣罢了。闲话就不多说了,下面详细介绍其实现过程,有不完善之处,请有心人及时反映给我,共同进步,谢谢!(实现语言:VC++)步骤:(一)打开VC++6.0,创建一个MFCAppWizard(exe),工程名为:CHART,选择但文档类型,在应用程序向导第六步将基类改为“CVi

2、ew”,单击“完成”,创建完成。(二)在其生成的对话框IDD_CHART_FORM中添加控件:控件名称控件ID控件标题组框IDC_STATIC接收信息:组框IDC_STATIC发送信息:编辑框IDC_EDIT_RECEIVE编辑框IDC_EDIT_SENDIP地址IDC_IPADDRESS1静态文本ID:按钮IDC_BTN_SEND发送(三)在CCHARTView中添加成员变量:SOCKETm_socket;(四)在CHARTView.h添加结构体:structRECEIVE{SOCKETsock;HWNDhwnd;};(五)在CCHARTView中添加成员函数:BOOL

3、InitSocket();函数代码:BOOLCCHARTView::InitSocket(){m_socket=socket(AF_INET,SOCK_DGRAM,0);//创建一个能够进行网络通信的套接字if(INVALID_SOCKET==m_socket){MessageBox("套接字创建失败!");returnFALSE;}SOCKADDR_INAddrSock;AddrSock.sin_family=AF_INET;//指代协议族,在socket编程中只能是AF_INET,代表TCP/IP协议族。AddrSock.sin_port=htons(6000);//

4、存储端口号(使用网络字节顺序)AddrSock.sin_addr.S_un.S_addr=htonl(INADDR_ANY);//sin_addr存储IP地址,s_addr按照网络字节顺序存储IP地址intretwal;retwal=bind(m_socket,(SOCKADDR*)&AddrSock,sizeof(SOCKADDR));//将套接字绑定到IP和端口上if(SOCKET_ERROR==retwal){closesocket(m_socket);MessageBox("绑定失败!");returnFALSE;}returnTRUE;}(一)添加成员函数:DW

5、ORDWINAPIRecvPrac(LPVOIDlpParaneter);//作为一个线程函数代码:DWORDWINAPICCHARTView::RecvPrac(LPVOIDlpParaneter){SOCKETsock=((RECEIVE*)lpParaneter)->sock;HWNDhwnd=((RECEIVE*)lpParaneter)->hwnd;SOCKADDR_INaddrFrom;intlen=sizeof(SOCKADDR);charrecvBuf[200];chartempBuf[300];intretval;while(TRUE){retval=r

6、ecvfrom(sock,recvBuf,200,0,(SOCKADDR*)&addrFrom,&len);/*recvfrom()函数各参数意义:1是标识一个已连接套接口的描述字,2是接收数据缓冲区,3是缓冲区长度,4是调用操作方式,5(可选)是指向装有原地址的缓冲区,6(可选)指向from缓冲区长度值*/if(SOCKET_ERROR==retval)break;CTimetm;tm=CTime::GetCurrentTime();CStringtime;time=tm.Format("【%H:%M:%S】");sprintf(tempBuf,"%st%s说:r

7、nt%sr",inet_ntoa(addrFrom.sin_addr),time,recvBuf);::PostMessage(hwnd,WH_RECVPATA,0,(LPARAM)tempBuf);}return0;}(一)在CHARTView.h添加:#defineWH_RECVPATAWM_USER+1//定义自己的消息ID(大于WM_USER的ID为用户ID,小于WM_USER的ID为系统调用ID)(二)在CHARTView.h中AFX_MSG后声明消息处理函数:(添加)afx_msgvoidOnRecvDat

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。