读书人

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

发布时间: 2014-06-02 16:29:30 作者: rapoo

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;


}

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

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


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

读书人网 >VC/MFC

热点推荐