mfc服务端接收客户端与服务端发来的消息

简单IM聊天程序,客户端使用MFC,服务端是控制台 - 下载频道 - CSDN.NET
&&&&简单IM聊天程序,客户端使用MFC,服务端是控制台
&简单IM聊天程序,客户端使用MFC,服务端是控制台
简单的IM聊天程序,客户端使用MFC写的,可以在上面增加其他功能,服务端采用控制台程序,对数据包进行转发或处理。有更好的写法,可以交流。
若举报审核通过,可奖励20下载分
被举报人:
举报的资源分:
请选择类型
资源无法下载
资源无法使用
标题与实际内容不符
含有危害国家安全内容
含有反动色情等内容
含广告内容
版权问题,侵犯个人或公司的版权
*详细原因:
您可能还需要
Q.为什么我点的下载下不了,但积分却被扣了
A. 由于下载人数众多,下载服务器做了并发的限制。若发现下载不了,请稍后再试,多次下载是不会重复扣分的。
Q.我的积分不多了,如何获取积分?
A. 获得积分,详细见。
完成任务获取积分。
评价资源返积分。
论坛可用分兑换下载积分。
第一次绑定手机,将获得5个C币,C币可。
下载资源意味着您已经同意遵守以下协议
资源的所有权益归上传用户所有
未经权益所有人同意,不得将资源中的内容挪作商业或盈利用途
CSDN下载频道仅提供交流平台,并不能对任何下载资源负责
下载资源中如有侵权或不适当内容,
本站不保证本站提供的资源的准确性,安全性和完整性,同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
课程资源下载排行
积分不够下载该资源
如何快速获得积分?
你下载资源过于频繁,请输入验证码
如何快速获得积分?
你已经下载过该资源,再次下载不需要扣除积分
简单IM聊天程序,客户端使用MFC,服务端是控制台
所需积分:0
剩余积分:
VIP会员,免积分下载
会员到期时间:日
剩余下载次数:1000
VIP服务公告:MFC 为什么服务端不能发消息到客户端的??_百度知道
MFC 为什么服务端不能发消息到客户端的??
很奇怪 ,只能客户端向服务端发消息,而服务端却不能向客户端发送消息~~~为什么的啊??我用的是Socket 我直接把客户端发到服务端那套搬过来给服务端发客户端用,就失败了~~ 求救!!!!!
服务端发送键:void CfuwuduanDlg::OnBnClickedButton3(){ UpdateData(TRUE); //CS //char str1[50]; //GetDlgItemText(IDC_EDIT2,(LPTSTR)str1,50); //str.Insert(0,(LPTSTR)str1); //CSocketFile file(&fuA); //CArchive arOut(&file,CArchive::store); //arOut&&send_
fuA.Send(&kjkjkj&,256); //CString
//fuA.GetPeerName( // TODO: 在此添加控件通知处理程序代码}客户端:void Socket_Accept::OnAccept(int nErrorCode){ // TODO: 在此添加专用代码和/或调用基类 Socket_RE *pl=new Socket_RE; if(Accept(*pl)) {
AfxMessageBox(_T(&有消息!接收成功!&)); }else{
AfxMessageBox(_T(&有消息!接收失败!&)); } CSocket::OnAccept(nErrorCode);}void Socket_RE::OnReceive(int nErrorCode){ char chr[256]; memset(chr,0,256); this-&Receive(chr,256); CS word= AfxMessageBox(word); CSocket::OnReceive(nErrorCode);}连接成功后,按服务端发送键,客户端没反应
回 江半仙 :void Socket_RE::OnReceive(int nErrorCode)
分明就没有且不允许使用返回值的,那你要我如何个返回法? 不是我定义的 MFC(win api)法定了的,是无法更改的 一改就出错的了
提问者采纳
CAsyncSocket::Receive-----------------------------Call this member function to receive data from a socket.Return ValueIf no error occurs, Receive returns the number of bytes received. If the connection has been closed, it returns 0. Otherwise, a value of SOCKET_ERROR is returned, and a specific error code can be retrieved by calling GetLastError. The following errors apply to this member function: WSANOTINITIALISED
A successful AfxSocketInit must occur before using this API.WSAENETDOWN
The Windows Sockets implementation detected that the network subsystem failed.WSAENOTCONN
The socket is not connected.WSAEINPROGRESS
A blocking Windows Sockets operation is in progress.WSAENOTSOCK
The descriptor is not a socket.WSAEOPNOTSUPP
MSG_OOB was specified, but the socket is not of type SOCK_STREAM.WSAESHUTDOWN
The socke it is not possible to call Receive on a socket after ShutDown has been invoked with nHow set to 0 or 2.WSAEWOULDBLOCK
The socket is marked as nonblocking and the Receive operation would block.WSAEMSGSIZE
The datagram was too large to fit into the specified buffer and was truncated.WSAEINVAL
The socket has not been bound with Bind.WSAECONNABORTED
The virtual circuit was aborted due to timeout or other failure.WSAECONNRESET
The virtual circuit was reset by the remote side.------------------------------------------------------------------So you should use the return value of the function ------------------------------------------------------------------Because you defined it to VOID, not because it couldn't return value
其他类似问题
为您推荐:
mfc的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁利用MFC的Csocket类实现网络通信_图文_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
文档贡献者
评价文档:
利用MFC的Csocket类实现网络通信
关​于​M​F​C​的​应​用
大小:339.50KB
登录百度文库,专享文档复制特权,财富值每天免费拿!
你可能喜欢【MFC】利用CSOCKET实现连接、通信
首先,必须说一下SOCKET连接的理论步骤:
1、在服务器端声明一个用于监听客户端的SOCKET对象,同时对应某个端口设定为监听状态;
2、在客户端声明SOCKET对象,并通过IP和端口向服务器请求连接;
3、服务器端监听到请求指令后,新建一个SOCKET对象,用于与客户端绑定,传送和接收数据,服务器用于监听的SOCKET继续监听下一个客户端的请求。
接下来,我们开始正式着手:
1、服务器端的建立
我们先新建一个Server项目(MFC应用程序,基于对话框,Windows套接字 打上勾),然后我们
项目-添加类-MFC类,添加一个基于CSocket的子类CListen,点击完成。这个类我们用于监听。
接下来,我们需要像添加CListen类一样,添加一个CRecv类,该类用于绑定客户端,实现文件的传输。
现在,我们在CListen的头文件中添加#include
"Recv.h",并且声明一个指向CRecv类对象的指针,如CRecv
*recv。接下来呢,我们在类视图中点中CListen类,点属性-重写-OnAccept。在OnAccept函数中,我们添加以下代码:
recv = new CRecv();
Accept(*recv);
这段代码的作用是在当服务器监听到客户端的连接请求时,新建一个CRecv的成员,并用它来接受客户端的连接请求,也就是用它与客户端绑定。
这样,我们CListen类就已经写完了,接下来我们去完成CRecv类,同样,我们在类视图中点中CRecv类,点属性-重写-OnReceive。在OnReceive函数中,我们添加以下代码:
char str[100];
Receive(str,100);
AfxMessageBox(strtest);
这段代码用于接收客户端发送过来的字符串,然后以MessageBox的形式显示出来。
最后,在主对话框的头文件中添加#include "Listen.h" ,并且声明一个CListen变量 m_listen
。然后,在主对话框的OnInitDialog函数中,添加如下代码:
m_listen.Create(8888);&&//8888表示的是我们要监听的端口
m_listen.Listen();
如此一来,服务器的事情我们已经完成了。
2、客户端的建立
相比于服务器,客户端就简单多了,因为它只需要一个SOCKET。
我们先新建一个Client项目(MFC应用程序,基于对话框,Windows套接字 打上勾),然后我们
项目-添加类-MFC类,添加一个基于CSocket的子类CMySocket,点击完成。这个类我们用于和客户端的连接和收发数据。
然后,在主对话框的头文件中添加#include
"MySocket.h",并且声明一个CMySocket类对象,如CMySocket&m_myS接着,我们得再主对话框的OnInitDialog函数中添加
m_mySocket.Creat();//初始化SOCKET
这时候,我们可以为主对话框添加一个按钮,caption设为“连接”,用于连接。双击这个按钮,开始函数定义,在函数体中我们加入以下代码:
m_mySocket.Connect(_T("127.0.0.1"),8888);
第一个参数表示想要连接的服务器的IP,第二个参数表示端口。
现在,客户端与服务器的连接工作已经做好了,我们需要再在客户端的主对话框中添加一个按钮,caption设为“发送”,用于发送信息,在改按钮的函数中,我们添加以下代码:
m_mySocket.Send("客户端发来了信息",100);//参数分别表示要发送的字符串和字符串的最大长度
这下,大功告成了,先运行服务器,然后运行客户端,点击客户端的“连接”按钮,接着点击“发送”,看服务器窗口,弹出了MessageBox,“客户端发来了信息”。
*在上面的例子中,我们只是客户端向服务器单向发送数据,如果想要双向发送数据,那么只需像服务器一样在客户端的CMySocket类重写一个OnReceive函数,并且在服务器添加一个用于发送的按钮就可以了。
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。}

我要回帖

更多关于 服务端和客户端 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信