首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

CSokcet 一定要基于窗口的吗?该如何处理

2014-06-02 
CSokcet 一定要基于窗口的吗?#include#includeclassCallManagerClient{public:Cal

CSokcet 一定要基于窗口的吗?
#include   <iostream.h>
#include   <afxsock.h>

class   CallManagerClient   {

public   :  
      CallManagerClient(){};
      ~CallManagerClient(){};
     
              int   clientLink();

   
private   :

                //MyObject   my;

CArchive   *in;

CArchive   *out;

CSocketFile     *sFile;

CSocket   *mySocket;


};

  int   CallManagerClient::clientLink(){

          //初始化SOCKET
          if(!AfxSocketInit()){

  cout < < "初始化Socket失败! " < <endl;

  return   FALSE;
  }

  //初始化SOCKET成功开始建立CSocket

  if   (mySocket==NULL){

          mySocket   =   new   CSocket;

 
  }

  //建立SOCKET
  if(!mySocket-> Create()){
               
                cout < < "SOCKET   建立失败 " < <endl;


  }


  //与服务器连接

  if   (!mySocket-> Connect( "192.168.0.137 ",8108)){

 

  cout < < "连接失败! " < <endl;

  return   FALSE;

  }else   {

  //连接成功   生成   存档对象

  cout < < "连接成功! " < <endl;


  sFile   =   new   CSocketFile(mySocket);

  in   =   new   CArchive(sFile,CArchive::load);

  out   =   new   CArchive(sFile,CArchive::store);
  }

              if   (in!=NULL)   in-> Close();

      if   (out!=NULL)   out-> Close();

      if   (sFile!=NULL)   sFile-> Close();

      if   (mySocket!=NULL)   mySocket-> Close();


          return   0;
  }


int   main(){

CallManagerClient   call;

call.clientLink();

return   0;


}

这是我的简单的测试程序,打算与远程服务器连接   ,但编译通过了,(DOS)执行时弹个“程序遇到问题的说明”   后就只有“Press   any   key   to   continue”   这句话了  

郁闷   。。。   上面的代码我是建立空工程后   新建CLASS文件做的。。


[解决办法]
对,如果你使用CSocket的话,就一定会在线程中建立一个CSocketWnd类变量,它用来接收由WSOCK32.DLL网络服务提供者发送的WM_SOCKET_NOTIFY事件,它将做为这个线程中所有Socket的消息池,进而通过它来处理WSOCK32.DLL发给Socket的事件。
[解决办法]
是的
CSocket是基于窗口的

热点排行