为什么CSocket派生类服务器端没有响应客户端发送事件而调用OnReceive呢,

时间:2021-04-27 16:57:47
俺在服务器端和客户端建立了CSocket类的派生类,并且连接都成功了,可是客户端发送数据后,服务器端并没有响应,服务器端的OnReceive并没有调用.怎么回事情啊.
主要代码如下:
服务器端:
  m_servsock=new CServSock;
 if(m_servsock->Create(m_port))
AfxMessageBox("服务器端创建套接字成功!");
 if(m_servsock->Listen())
AfxMessageBox("套接字监听成功!");

void CServSock::OnAccept(int nErrorCode) 
{
// TODO: Add your specialized code here and/or call the base class
AfxMessageBox("我靠!");
CSocket::OnAccept(nErrorCode);

}

客户端:
m_clientsock=new CClientSock;
_boy myboy;
if (m_clientsock->Create())
AfxMessageBox("客户端创建套接字成功!");
GetDlgItemText(IDC_IP,m_Ip);
UpdateData(true);
if (m_clientsock->Connect(m_Ip,atoi(m_Port)))
AfxMessageBox("连接服务器端成功!");
myboy.m_age=10;
memset(myboy.m_name,0,20);
strcpy(myboy.m_name,"monk");
if(m_clientsock->Send(&myboy,sizeof(myboy)))
AfxMessageBox("发送消息成功!");

运行的结果是这样的,客户端创建,连接,发送消息都成功.服务器端创建,监听,OnAccept也都成功.可是客户发送消息后,服务器端并没有响应,并没有调用 OnReceive.

怎么回事情,各位大瞎帮帮忙哦!

6 个解决方案

#1


你的服务器程序中又没有OnReceive函数,怎么接收?

#2


void CServSock::OnReceive(int nErrorCode) 
{
    if (Receive(&m_boy,sizeof(m_boy)))
AfxMessageBox("收到数据");

   CSocket::OnReceive(nErrorCode);
}

我的服务器端的Socket有这个,还不够吗?
可是并没有响应这个啊,怎么搞的

#3


我考
这么一个问题
怎么那么多高手都没有人能回答阿

下一个回答问题并且解决问题的人
得50分
不够可以再加

#4


看来你对Socket的运行过程还不够熟,你的服务器程序里要有一个监听套接字,它执行listen和accept函数,且还要有n个与客户一对一的数据传输套接字,有几个客户就得有几个这样的套接字,即在监听套接字的accept函数里得新建一个套接字和accept的客户端连接。这方面一句两句说不清楚,建议你还是看一些相关的书吧。简而言之,在你的程序里,在accept的函数里要建一个新套接字,这个套接字来响应OnReceive函数

#5


楼上的师兄说的对!!!你要为每一个和你建立连接的客户端建立新的套接字!!!这样才能建立双方的通信!!

#6


多谢2位大虾,接分!

#1


你的服务器程序中又没有OnReceive函数,怎么接收?

#2


void CServSock::OnReceive(int nErrorCode) 
{
    if (Receive(&m_boy,sizeof(m_boy)))
AfxMessageBox("收到数据");

   CSocket::OnReceive(nErrorCode);
}

我的服务器端的Socket有这个,还不够吗?
可是并没有响应这个啊,怎么搞的

#3


我考
这么一个问题
怎么那么多高手都没有人能回答阿

下一个回答问题并且解决问题的人
得50分
不够可以再加

#4


看来你对Socket的运行过程还不够熟,你的服务器程序里要有一个监听套接字,它执行listen和accept函数,且还要有n个与客户一对一的数据传输套接字,有几个客户就得有几个这样的套接字,即在监听套接字的accept函数里得新建一个套接字和accept的客户端连接。这方面一句两句说不清楚,建议你还是看一些相关的书吧。简而言之,在你的程序里,在accept的函数里要建一个新套接字,这个套接字来响应OnReceive函数

#5


楼上的师兄说的对!!!你要为每一个和你建立连接的客户端建立新的套接字!!!这样才能建立双方的通信!!

#6


多谢2位大虾,接分!