主要代码如下:
服务器端:
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有这个,还不够吗?
可是并没有响应这个啊,怎么搞的
{
if (Receive(&m_boy,sizeof(m_boy)))
AfxMessageBox("收到数据");
CSocket::OnReceive(nErrorCode);
}
我的服务器端的Socket有这个,还不够吗?
可是并没有响应这个啊,怎么搞的
#3
我考
这么一个问题
怎么那么多高手都没有人能回答阿
下一个回答问题并且解决问题的人
得50分
不够可以再加
这么一个问题
怎么那么多高手都没有人能回答阿
下一个回答问题并且解决问题的人
得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有这个,还不够吗?
可是并没有响应这个啊,怎么搞的
{
if (Receive(&m_boy,sizeof(m_boy)))
AfxMessageBox("收到数据");
CSocket::OnReceive(nErrorCode);
}
我的服务器端的Socket有这个,还不够吗?
可是并没有响应这个啊,怎么搞的
#3
我考
这么一个问题
怎么那么多高手都没有人能回答阿
下一个回答问题并且解决问题的人
得50分
不够可以再加
这么一个问题
怎么那么多高手都没有人能回答阿
下一个回答问题并且解决问题的人
得50分
不够可以再加
#4
看来你对Socket的运行过程还不够熟,你的服务器程序里要有一个监听套接字,它执行listen和accept函数,且还要有n个与客户一对一的数据传输套接字,有几个客户就得有几个这样的套接字,即在监听套接字的accept函数里得新建一个套接字和accept的客户端连接。这方面一句两句说不清楚,建议你还是看一些相关的书吧。简而言之,在你的程序里,在accept的函数里要建一个新套接字,这个套接字来响应OnReceive函数
#5
楼上的师兄说的对!!!你要为每一个和你建立连接的客户端建立新的套接字!!!这样才能建立双方的通信!!
#6
多谢2位大虾,接分!