//******************************CLASS TCommunication For TCP****************************************************
__fastcall TCommunication::TCommunication(SOCKET m_Socket,bool CreateSuspended):TThread(FALSE)
{
m_AcceptSocket=m_Socket;
szTmp[0]='\0';
FreeOnTerminate=true;
}
__fastcall TCommunication::~TCommunication()
{
// closesocket(m_AcceptSocket);
}
void __fastcall TCommunication::Execute()
{
char buf[4096];
int nSize=0;
nSize=recv(m_AcceptSocket,(char FAR*)buf,4096,0);
if(nSize>0)
{
buf[nSize]='\0';
//Display
PSTNForm->Memo1->Lines->Add("Received Length:"+String(nSize));
PSTNForm->Memo1->Lines->Add("Received:"+StrPas(buf));
//Deliver
::Sleep(100);
send(m_AcceptSocket,buf,nSize,0);
}
}
//******************************CLASS TListenThread*****************************************************
__fastcall TListenThread::TListenThread(PROTO m_ProtocolA,UINT m_PortA,bool CreateSuspended):TThread(FALSE)
{
m_Socket=INVALID_SOCKET;
m_Port=m_PortA;
m_Protocol=m_ProtocolA;
szTmp[0]='\0';
::ZeroMemory(&wsaData,sizeof(WSAData));
::ZeroMemory(&server,sizeof(struct sockaddr_in));
FreeOnTerminate=TRUE;//Automatically delete while terminating.
}
__fastcall TListenThread::~TListenThread()
{
closesocket(m_Socket);
::WSACleanup();
m_Socket=INVALID_SOCKET;
m_Port=0;
m_Protocol=TCP;
szTmp[0]='\0';
::ZeroMemory(&wsaData,sizeof(WSAData));
::ZeroMemory(&server,sizeof(struct sockaddr_in));
}