忙和了一天,试来试去 终不得成功 只好请教各位了
n个客户端连接到了服务器端上。OnAccept()里 将客户端套接字m_sConnect存入 CPtrList里 。
如:
OnAccept()中.....
m_conList.AddTail(&m_sConnect);取出使用时:CMySocket *pSocket = (CMySocket *)m_conList.GetAt(...);我也可以在服务器端程序上给每个客户端发送信息,是取出CPtrList里 的m_sConnect向各个客户端发送的。
问题是:
在客户端上向服务器端发送信息时,服务器端收不到 服务器端的 OnReceive()里 该怎样写?跟踪了一下,当客户端发送信息时,服务器端上根本就没有受到 OnReceive()消息
n个客户端连接到了服务器端上。OnAccept()里 将客户端套接字m_sConnect存入 CPtrList里 。
如:
OnAccept()中.....
m_conList.AddTail(&m_sConnect);取出使用时:CMySocket *pSocket = (CMySocket *)m_conList.GetAt(...);我也可以在服务器端程序上给每个客户端发送信息,是取出CPtrList里 的m_sConnect向各个客户端发送的。
问题是:
在客户端上向服务器端发送信息时,服务器端收不到 服务器端的 OnReceive()里 该怎样写?跟踪了一下,当客户端发送信息时,服务器端上根本就没有受到 OnReceive()消息
解决方案 »
- 关于数据库翻页的问题
- 急!!!!!!急求VC中打开 WRL 文件的程序!想在VC中利用wrl文件中的数据,但是打不开wrl文件!有谁能帮上忙??立马给分!!!!!!
- 怎么没有CTestDlg类
- 一个简单的多线程问题,各位高手帮帮忙!
- 寻求制作网络游戏辅助工具(外挂)的高手加盟
- #pragma comment(lib, "test.lib")这条命令在开发静态库时有没起作用?
- CFileDialog中如何将一次选多个文件.急死人了!!!大虾们来帮帮忙,救救小弟
- 找句柄(菜鸟问题)
- 在SDI中,它的客户区是块白板,我怎样可以在这里填充Dialog?
- 如何编程实现过滤驱动的安装啊,有.inf和.sys文件,例如:kbfiltr.inf和kbfiltr.sys。
- 请问如何用程序实现删除WINDOWS2000下一些只读的注册表键和值?
- 如何更改“IE出错时,会自动调用VC的Debug跟踪器”
一,用SOCKET API。
二,下载MyICQ源码。http://www.csdn.net/cnshare/soft/openfile.asp?kind=1&id=11417
OnAccept()中
//这边加入创建新连接的程序
.....
m_conList.AddTail(&m_sConnect);
CMySocket *pSock=new CMySocket;
pSock=Accept();
m_conList.AddTail(pSock);// 不用时将所有的pSock指向的SOCKET delete
// 然后再m_conList.RemoveAll(); 这样做和你的代码的区别在于,你每接收一个,都把以前的给冲了,
也就是说,你的m_conList里保存的指针都指向了一个对象。 另外,你的CMyScoket类要重写OnReceive()和OnSend()。
sjrhpy(风中杨柳)
shiyongfan(追梦人) おはようございます。多谢三位热情的朋友 今天我要好好地试一下 大家都只侧重于OnAccept()函数 难道说关键是OnAccept() ? 只要这个函数写得对,那么OnReceive()就能保证肯定好用吗?现在,我OnAccept()里是按照大家说的,new了一个新的Socket指针,然后Accept(),然后将它保存在 CPrtList型的m_conList里了。如果有n个客户,这个链表里就会有n个指针, 可是它们都在链表里,怎样用它们在OnReceive()里收到对应自己的客户端发来的消息?(注,它在链表里放着,当前一个pSok指针不可能 "同时" 指向所有的链表里的Socket)今天我一定要解决这个问题!! 再次感谢三位的关心。kinsan より
OnAccept()中
//这边加入创建新连接的程序
.....
m_conList.AddTail(&m_sConnect);To sjrhpy(风中杨柳):
你说的我以经实现了, 三个客户端连到了服务端上, 且服务端上可取出各个Socket(从m_conList)给各个客户端发送数据了。 问题是:这样后,服务端上是怎样知道客户端发来消息呢?即:当有客户端发信息时 , 服务端上怎样才能收到 OnReceive消息? 至少要收到OnReceive消息服务端才能进行操作嘛 现在任凭客户端哭天喊爹,服务端仍旧没有任何反应 (泣)
{
// TODO: Add your specialized code here and/or call the base class
for(int i=0;i<m_conList.GetCount();i++)
{
CMySocket *pSocket = (CMySocket *)m_conList.GetAt(m_conList.FindIndix(i));
if(pSocket->m_hSocket == m_hSocket)
{
//添加你的处理代码
}
}
} return CSocket::Receive(lpBuf, nBufLen, nFlags);
}
m_conList.AsyncSelect( FD_READ);
試試