我在VC下做了个ATL/COM工程
其中的函数定义如下,但是不知道怎么去调用这些函数
工程DLL已经导入
COM组件已经实例化//WSSGIPServer.cpp
STDMETHODIMP WSSGIPServer::StartServer(int *RetVal)
{
    if (SGIPServer.StartServer())
*RetVal = 1;
else
*RetVal = 0;
return S_OK;
}//WSSGIPServer.h
STDMETHOD(StartServer)(/*[out,retval]*/ int* RetVal);
//StartServer函数的实现
BOOL CSGIPServer::StartServer()
{
WORD wVerReq;
int status;
struct sockaddr_in SerAddr;  wVerReq = 0x101;
  
status = WSAStartup(wVerReq,&WSAData);
if (status) 
{
//初始化失败;
MessageBox(hWnd,_T("wsock32.dll 不能被初始化!"),_T("错误信息"),MB_OK);
return false;
} if (WSAData.wVersion != 0x101)
{
//版本不符合;
MessageBox(hWnd,_T("当前wsock版本低于1.1"),_T("提示信息"),MB_OK);
WSACleanup();
return false;
}
//建SERVER SOCKET
sck = socket(AF_INET,SOCK_STREAM,0); //为服务器提供一个一定的套接字
//返回一个套接字的引用或者返回INVALID_SOCKET;
if ( sck == INVALID_SOCKET) 
{
return false;
}
struct hostent FAR *hostaddr;
char hostname[255]={0};
gethostname(hostname,255);
hostaddr=gethostbyname(hostname);
  
SerAddr.sin_family = AF_INET; //定义地址族
SerAddr.sin_addr.S_un.S_addr = *((unsigned long *)hostaddr->h_addr_list[0]);
SerAddr.sin_port = htons(SOCKETPORT);
//转换u_short为适合TCP/IP协议的big_endian类型
if (bind(sck,(struct sockaddr *)&SerAddr,sizeof(SerAddr)) == SOCKET_ERROR)
//bind将一个局部地址和一个SOCKET联在一起;
{
closesocket(sck);
return false;
}
//设置为线程阻塞模式
BOOL optval=TRUE;
if (setsockopt(sck,SOL_SOCKET,SO_REUSEADDR,(char*)&optval,sizeof(optval))== SOCKET_ERROR)
//setsockopt设置socket的属性;
{
closesocket(sck);
return false;
} //listen event
if (listen(sck,1) < 0)
// 1-需要建立监听的Socket;
// 2-最大连接个数;若能建立监听return 0;
{
closesocket(sck);
return false;
}
//开始一个接收线程
RecvParam *m_Param;
         m_Param = new RecvParam;
         ZeroMemory(m_Param,sizeof(RecvParam));
m_Param->hWnd  = hWnd;
m_Param->pSGIP = this;
m_Param->sck   = sck; DWORD  dwID;   //线程ID
hThread=CreateThread(NULL,0,RecData,(LPVOID)m_Param,0,&dwID);
Sleep(1000);

return true;
}请高手帮忙
最好能留下联系方式,谢谢。

解决方案 »

  1.   

    DEBUG之后的输出参数没有办法去获得,也没有可能再在组件删除之后再获取
      

  2.   

    你在应用程序中整个你接口的实例,然后调用就是,看你这个是网络通信,接受信息的话要用到连接点机制。
    http://www.vchelp.net/vchelp/zart/com_con.asp?type_id=29&class_id=1&cata_id=3&article_id=90&search_term=连接点
    这里介绍如何使用连接点,同时你也可以调用你接口的方法