CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  进程/线程/DLL

在多线程中如何创建CSOCKET???

楼主longchengdong(dragon)2001-02-12 10:58:00 在 VC/MFC / 进程/线程/DLL 提问

class   RecvThread   :   public   CWinThread  
  {  
  DECLARE_DYNCREATE(RecvThread)  
  public:  
  RecvThread();                       //   protected   constructor   used   by           CSocket   *mmm;  
  public:  
  virtual   BOOL   InitInstance();  
  virtual   int   ExitInstance();  
  public:  
  virtual   ~RecvThread();  
  DECLARE_MESSAGE_MAP()  
  };  
   
  BOOL   RecvThread::InitInstance()  
  {  
    mmm   =   new   class   CSocket();  
    mmm->Create(0,   SOCK_STREAM,   "192.168.0.16");  
    mmm->Connect("192.168.0.188",   20003);  
  }  
   
  在mmm->Create时出错,为什么? 问题点数:20、回复次数:8Top

1 楼longchengdong(dragon)回复于 2001-02-12 11:05:00 得分 0

报   Unhandled   exception!Top

2 楼lhxx(随风)回复于 2001-02-12 11:20:00 得分 0

不能用new的方式  
  CSocket   mmm;  
  mmm.Create(...);  
  mmm.Connect(...);Top

3 楼longchengdong(dragon)回复于 2001-02-12 11:33:00 得分 0

lhxx:  
  用你的方法,同样的错误!Top

4 楼adone(阿不)回复于 2001-02-12 11:33:00 得分 20

这是VC的bug之一。安装vs6   sp3就可以解决。  
  如果不原安装sp3,在你的线程初始化时加上:  
  #ifndef   _AFXDLL  
  AFX_MODULE_THREAD_STATE*   pState   =   ::AfxGetModuleThreadState();  
  if   (pState->m_pmapSocketHandle   ==   NULL)  
  pState->m_pmapSocketHandle   =   new   CMapPtrToPtr;  
  if   (pState->m_pmapDeadSockets   ==   NULL)  
  pState->m_pmapDeadSockets   =   new   CMapPtrToPtr;  
  if   (pState->m_plistSocketNotifications   ==   NULL)  
  pState->m_plistSocketNotifications   =   new   CPtrList;  
  #endif  
  并且you   must   use   MFC   as   a   static   libraryTop

5 楼snowglede(雪鹰)回复于 2001-02-12 13:54:00 得分 0

哈哈   ,你忘记了初始化socket;  
  在应用的初始化部分加下如下示代码:  
  BOOL   CSecuChatSvrApp::InitInstance()  
  {  
  if   (!AfxSocketInit())  
  {  
  AfxMessageBox(IDP_SOCKETS_INIT_FAILED);  
  return   FALSE;  
  }  
                    ...  
  }  
  Top

6 楼lhxx(随风)回复于 2001-02-12 15:26:00 得分 0

SORRY,   搞错了,  
  以为你已经初始化了,呵呵Top

7 楼sunriselx()回复于 2001-02-12 15:31:00 得分 0

哥们,为什么不用winsock,csocket效率太低了,winsock不用new,定义一个后用CArray记录下来就行了Top

8 楼meifen(meifen)回复于 2001-07-13 10:58:20 得分 0

oTop

相关问题

  • 如何创建多线程
  • 如何用多线程创建视图?
  • 请问如何创建多线程?
  • V中如何创建多线程?
  • CSocket 多线程
  • Csocket 如何实现多线程?
  • 如何用API32 在 VB6中创建多线程!难道vb不能创建多线程吗?
  • 在VB内如何创建多线程程序?
  • 如何在多线程中创建对话框?
  • CSocket类与多线程

关键词

  • virtual
  • null
  • recvthread
  • pstate
  • mmm
  • csocket
  • 初始化
  • initinstance
  • bool
  • create

得分解答快速导航

  • 帖主:longchengdong
  • adone

相关链接

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

广告也精彩

反馈

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