SocketTx.cpp
上传用户:aphszp
上传日期:2007-01-09
资源大小:42k
文件大小:1k
源码类别:

Telnet服务器

开发平台:

Visual C++

  1. // SocketTx.cpp: implementation of the CSocketTx class.
  2. //
  3. //////////////////////////////////////////////////////////////////////
  4. #include "stdafx.h"
  5. #include "Telnet.h"
  6. #include "conio.h"
  7. #include "SocketTx.h"
  8. #ifdef _DEBUG
  9. #undef THIS_FILE
  10. static char THIS_FILE[]=__FILE__;
  11. #define new DEBUG_NEW
  12. #endif
  13. //////////////////////////////////////////////////////////////////////
  14. // Construction/Destruction
  15. //////////////////////////////////////////////////////////////////////
  16. extern HANDLE stdin1;
  17. extern HANDLE stdout1;
  18. extern HANDLE stderr1;
  19. CSocketTx::CSocketTx(SOCKET hSocket,HANDLE &hThread)
  20. {
  21. DWORD dwRet;
  22. m_nExit = 0;
  23. m_hThread = NULL;
  24. m_hSocket = hSocket;
  25. m_hThread = CreateThread(NULL,0,(LPTHREAD_START_ROUTINE) SendTh,(LPVOID)this,0,&dwRet);
  26. if ( m_hThread == NULL ) return;
  27. hThread = m_hThread;
  28. }
  29. CSocketTx::~CSocketTx()
  30. {
  31. m_nExit = 1;
  32. }
  33. DWORD CSocketTx::SendTh(CSocketTx *pSocketTx)
  34. {
  35. char pBuff[256];
  36. unsigned long dwLen;
  37. int nRet;
  38. char ch;
  39. dwLen = 1;
  40. while(1)
  41. {
  42. if ( pSocketTx->m_nExit == 1 ) { ExitThread(0); return 0; }
  43. WaitForSingleObject(stdin1,INFINITE);
  44. ch = getch();
  45. nRet = send(pSocketTx->m_hSocket,&ch,dwLen,0);
  46. if ( nRet == SOCKET_ERROR ) { TRACE("nSend Fail........!n"); pSocketTx->m_nExit = 0; continue;}
  47. }
  48.   return 0;
  49. }