CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  网络编程

关于CPtrList的一个奇怪的问题,大家帮忙看看

楼主xxrl(孔曰成仁,孟曰取媳妇-->她太有才了)2005-06-03 12:26:04 在 VC/MFC / 网络编程 提问

一个通讯程序  
  在OnAccept()里面如果这样  
  pSendToClientSocket   =   new   CSendToClientSocket(this);  
  if   (   pAcceptClientDataSocket->Accept(*pSendToClientSocket)   )  
  {  
  //遍历服务器内存块  
  //将内存块里面存有的socket指针遍历一下后,添加  
  POSITION   pos;  
  bool   bValue   =   false;  
  ///////////////////////下面m_ClientSocketList没有问题  
  for(pos   =   m_ClientSocketList.GetHeadPosition();pos!=NULL;)  
  {  
  CSendToClientSocket*   pSock   =   (CSendToClientSocket*)m_ClientSocketList.GetNext(pos);  
  if(   pSock==pSendToClientSocket)  
  {  
  bValue   =   true;  
  break;  
  }  
  }  
   
  //没有找到是添加到运行时socket指针list中  
  if(bValue==false)  
  {  
  CString   IpAddress;  
  UINT   port;  
  pSendToClientSocket->GetPeerName(IpAddress,port);  
  // pSendToClientSocket->m_ClientPicIndex   =   ClientPicIndex;  
  pSendToClientSocket->m_ClientPort   =   port;  
  pSendToClientSocket->m_ClientIP   =   LPSTR(LPCTSTR(IpAddress));  
   
  m_ClientSocketList.AddTail(pSendToClientSocket);  
  }  
  }  
   
  可如果在OnReceive()里面  
  我再这样  
  POSITION   pos;  
  bool   bValue   =   false;  
  ////下面就执行不通过了   这是什么原因??????????  
  for(pos   =   m_ClientSocketList.GetHeadPosition();pos!=NULL;)  
  {  
  CSendToClientSocket*   pSock   =   (CSendToClientSocket*)m_ClientSocketList.GetNext(pos);  
  if(   pSock==pReceiveData)  
  {  
  bValue   =   true;  
  break;  
  }  
  }  
   
  //没有找到是添加到运行时socket指针list中  
  if(bValue==false)  
  {  
  CString   IpAddress;  
  UINT   port;  
  pReceiveData->GetPeerName(IpAddress,port);  
  // pReceiveData->m_ClientPicIndex   =   ClientPicIndex;  
  pReceiveData->m_ClientPort   =   port;  
  pReceiveData->m_ClientIP   =   LPSTR(LPCTSTR(IpAddress));  
   
  m_ClientSocketList.AddTail(pReceiveData);  
  }  
   
  debug看到   在OnAccept里面时   m_ClientSocketList的cnt=0  
  而在OnReceive里面事   m_ClientSocketList的cnt=???,好像他找不到方向似的,请问这是怎么回事?  
   
  怎么解决啊? 问题点数:100、回复次数:7Top

1 楼xxrl(孔曰成仁,孟曰取媳妇-->她太有才了)回复于 2005-06-03 12:35:15 得分 0

客户端发送socket   服务端接收时用CPtrList保存没有问题,可是一到Receive时   这个对象好像没了  
  我是在头文件中这样定义的  
  CPtrList   m_ClientSocketList;  
   
  将客户端连接的SOCKET保存起来   以方便以后群发数据。。。Top

2 楼younggle(洋溢)回复于 2005-06-03 12:41:46 得分 50

m_ClientSocketList是谁的成员变量??  
   
  还有你看你定义的Socket对   OnAccept   和   OnReceive()   是不是同一个?  
  是否是局部变量??Top

3 楼xxrl(孔曰成仁,孟曰取媳妇-->她太有才了)回复于 2005-06-03 12:46:51 得分 0

噢   一个对话框  
  两个socket类  
  m_ClientSocketList是对话框的成员  
  对话框中有访问socket类的OnAccept和OnReceive的函数  
  在OnAccept()里面是  
  void   CAcceptClientDataSocket::OnAccept(int   nErrorCode)    
  {  
  //   TODO:   Add   your   specialized   code   here   and/or   call   the   base   class  
   
  CSocket::OnAccept(nErrorCode);  
  m_pRealtimeDlg->OnDataAccept();  
  }  
  在OnReceive里面是  
  void   CSendToClientSocket::OnReceive(int   nErrorCode)    
  {  
  //   TODO:   Add   your   specialized   code   here   and/or   call   the   base   class  
   
  CSocket::OnReceive(nErrorCode);  
  m_pRealtimeDlg->OnDataReceive(this);  
  }Top

4 楼xxrl(孔曰成仁,孟曰取媳妇-->她太有才了)回复于 2005-06-03 12:48:33 得分 0

在m_pRealtimeDlg的OnDataAccept函数里面时调用m_ClientSocketList没有问题  
  可在OnDataReceive里面调用m_ClientSocketList却是一开始我说的情况   这是为什么?  
   
  有什么建议?Top

5 楼koko1998(高价购买火车票)回复于 2005-06-03 12:58:11 得分 50

gzTop

6 楼xxrl(孔曰成仁,孟曰取媳妇-->她太有才了)回复于 2005-06-03 13:05:37 得分 0

我晕Top

7 楼xxrl(孔曰成仁,孟曰取媳妇-->她太有才了)回复于 2005-06-03 13:13:09 得分 0

问题解决了   我在CSendToClientSocket构造时没有把对话框对象赋给m_pRealtimeDlg   而在接收的socket类的构造里面我赋值了   所以就没有问题  
   
  谢谢看过的和关注过此帖子的同僚们   虽然鲜有回答的,但up也是我非常开心的事.....Top

相关问题

  • 奇怪,奇怪
  • 奇怪,奇怪!
  • 奇怪奇怪???
  • 奇怪!奇怪
  • 奇怪奇怪...........?????...........
  • 奇怪!奇怪!真奇怪!!!
  • 奇怪奇怪真奇怪
  • 奇怪???奇怪??奇怪???
  • 奇怪奇怪真奇怪。
  • 奇怪奇怪奇怪................

关键词

  • socket
  • 指针
  • clientsocketlist
  • psendtoclientsocket
  • csendtoclientsocket
  • preceivedata
  • cptrlist
  • onaccept
  • clientpicindex
  • prealtimedlg

得分解答快速导航

  • 帖主:xxrl
  • younggle
  • koko1998

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo