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是基于窗口的