refleks17
June 4th, 2004, 11:19 PM
Hello I derived a class from the CSocket class. I'm trying to make the Send() function in a thread but the program is just freezing . Heres the code :
// declaration
class CPSock : public CSocket
{
DECLARE_DYNCREATE(CPSock)
// Attributes
public:
typedef struct SENDPACKAGE
{
CPSock* _this;
const void *lpBuf;
int nBufLen;
int nFlags;
} SENDPACKAGE;
typedef struct RECEIVEPACKAGE
{
CPSock* _this;
void* lpBuf;
int nBufLen;
int nFlags;
} RECEIVEPACKAGE;
//functions,,,
};
//IMPLEMENTATION (.cpp)
int CPSock::Send(const void* lpBuf, int nBufLen, int nFlags)
{
_param->_this = this;
_param->lpBuf = lpBuf;
_param->nBufLen = nBufLen;
_param->nFlags = nFlags;
AfxBeginThread (TrSend, _param);
return nBufLen;
}
int CPSock::SendNormal(const void* lpBuf, int nBufLen, int nFlags)
{
return CSocket::Send(lpBuf, nBufLen, nFlags);
}
UINT CPSock::TrSend(LPVOID param)
{
SENDPACKAGE* ts = (SENDPACKAGE*) param;
return ts->_this->SendNormal(ts->lpBuf,ts->nBufLen,ts->nFlags);
}
Anybody can help me out?
// declaration
class CPSock : public CSocket
{
DECLARE_DYNCREATE(CPSock)
// Attributes
public:
typedef struct SENDPACKAGE
{
CPSock* _this;
const void *lpBuf;
int nBufLen;
int nFlags;
} SENDPACKAGE;
typedef struct RECEIVEPACKAGE
{
CPSock* _this;
void* lpBuf;
int nBufLen;
int nFlags;
} RECEIVEPACKAGE;
//functions,,,
};
//IMPLEMENTATION (.cpp)
int CPSock::Send(const void* lpBuf, int nBufLen, int nFlags)
{
_param->_this = this;
_param->lpBuf = lpBuf;
_param->nBufLen = nBufLen;
_param->nFlags = nFlags;
AfxBeginThread (TrSend, _param);
return nBufLen;
}
int CPSock::SendNormal(const void* lpBuf, int nBufLen, int nFlags)
{
return CSocket::Send(lpBuf, nBufLen, nFlags);
}
UINT CPSock::TrSend(LPVOID param)
{
SENDPACKAGE* ts = (SENDPACKAGE*) param;
return ts->_this->SendNormal(ts->lpBuf,ts->nBufLen,ts->nFlags);
}
Anybody can help me out?