C++Builder中用socketapi来编写网络通讯程序(二)
来源:优易学  2011-11-24 18:36:27   【优易学:中国教育考试门户网】   资料下载   IT书店

  //******************************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));

  }

[1] [2] [3] [4] 下一页

责任编辑:小草

文章搜索:
 相关文章
热点资讯
资讯快报
热门课程培训