tnetwork.cpp
上传用户:tigerk9
上传日期:2020-03-10
资源大小:237k
文件大小:3k
源码类别:

Telnet客户端

开发平台:

Visual C++

  1. ///////////////////////////////////////////////////////////////////////////////
  2. //Telnet Win32 : an ANSI telnet client.
  3. //Copyright (C) 1998-2000 Paul Brannan
  4. //Copyright (C) 1998 I.Ioannou
  5. //Copyright (C) 1997 Brad Johnson
  6. //
  7. //This program is free software; you can redistribute it and/or
  8. //modify it under the terms of the GNU General Public License
  9. //as published by the Free Software Foundation; either version 2
  10. //of the License, or (at your option) any later version.
  11. //
  12. //This program is distributed in the hope that it will be useful,
  13. //but WITHOUT ANY WARRANTY; without even the implied warranty of
  14. //MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  15. //GNU General Public License for more details.
  16. //
  17. //You should have received a copy of the GNU General Public License
  18. //along with this program; if not, write to the Free Software
  19. //Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  20. //
  21. //I.Ioannou
  22. //roryt@hol.gr
  23. //
  24. ///////////////////////////////////////////////////////////////////////////
  25. ///////////////////////////////////////////////////////////////////////////////
  26. //
  27. // Module: tnetwork.cpp
  28. //
  29. // Contents: telnet network module
  30. //
  31. // Product: telnet
  32. //
  33. // Revisions: March 18, 1999 Paul Brannan (pbranna@clemson.edu)
  34. //
  35. ///////////////////////////////////////////////////////////////////////////////
  36. #include "tnetwork.h"
  37. void TNetwork::SetSocket(SOCKET s) {
  38. socket = s;
  39. net_type = TN_NETSOCKET;
  40. local_echo = line_mode = 1;
  41. }
  42. void TNetwork::SetPipe(HANDLE pIn, HANDLE pOut) {
  43. pipeIn = pIn;
  44. pipeOut = pOut;
  45. net_type = TN_NETPIPE;
  46. local_echo = line_mode = 0;
  47. }
  48. int TNetwork::WriteString(const char *str, const int length) {
  49. switch(net_type) {
  50. case TN_NETSOCKET:
  51. return send(socket, str, length, 0);
  52. case TN_NETPIPE:
  53. {
  54. DWORD dwWritten;
  55. if(!WriteFile(pipeOut, str, length, &dwWritten, (LPOVERLAPPED)NULL)) return -1;
  56. return dwWritten;
  57. }
  58. }
  59. return 0;
  60. }
  61. int TNetwork::ReadString (char *str, const int length) {
  62. switch(net_type) {
  63. case TN_NETSOCKET:
  64. return recv(socket, str, length, 0);
  65. case TN_NETPIPE:
  66. {
  67. DWORD dwRead;
  68. if(!ReadFile(pipeIn, str, length, &dwRead, (LPOVERLAPPED)NULL)) return -1;
  69. return dwRead;
  70. }
  71. }
  72. return 0;
  73. }
  74. void TNetwork::do_naws(int width, int height) {
  75. if(!naws_func) return;
  76. char buf[100];
  77. int len = (*naws_func)(buf, width, height);
  78. WriteString(buf, len);
  79. }
  80. void TNetwork::SetLocalAddress(char *buf) {
  81. local_address = new char[strlen(buf) + 1];
  82. strcpy(local_address, buf);
  83. }