传递CSocket类型参数的问题!
据说微软不让直接传递CSocket,要依靠句柄。于是找到了Attach函数,又找到了Detach函数。但是不是特别清楚这个东西怎么用……以下是MSDN中的内容:
-----------------------------------------------------------------------------------------------
CSocket::Attach
Call this member function to attach the hSocket handle to a CSocket object.
BOOL Attach( SOCKET hSocket );
Parameters : hSocket Contains a handle to a socket.
Return Value: Nonzero if the function is successful.
Remarks: The SOCKET handle is stored in the object's m_hSocket data member.
-----------------------------------------------------------------------------------------------
CAsyncSocket::Detach
Call this member function to detach the SOCKET handle in the m_hSocket data member from the CAsyncSocket object and set m_hSocket to NULL.
SOCKET Detach( );
Requirements Header: afxsock.h
-----------------------------------------------------------------------------------------------
我自己这么写了一个段,不知道是不是该这么用,请各位大虾们帮忙给看一下,指点一下:
主程序中:CSocket CR;
SOCKET hsocket;
hsocket=CR.Detach();
//然后把hoscket作为参数往一个函数里面传
Myfunc(hsocket);
函数中:CSocket CD;
SOCKET hsock;
hsock=hsocket;
CD.Attach(hsock);
-----------------------------------------------------------------------------------------------
现在整个问题我捋一捋哈:
1)我的目的就是把CSocket类型对象作为参数传递,我写的那段是否正确?
2)我在调试的时候怎么能知道原来的CR真的被传进来且现在已经由CD全权代表了呢?
3)MSDN里说句柄都存在对象的m_hSocket成员里,我直接让源套接字的句柄赋给目标套接字上行不?
无比感谢!