Reactos
at master 92 lines 2.5 kB view raw
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// 28// Module: tnetwork.cpp 29// 30// Contents: telnet network module 31// 32// Product: telnet 33// 34// Revisions: March 18, 1999 Paul Brannan (pbranna@clemson.edu) 35// 36/////////////////////////////////////////////////////////////////////////////// 37 38#include "precomp.h" 39 40void TNetwork::SetSocket(SOCKET s) { 41 socket = s; 42 net_type = TN_NETSOCKET; 43 local_echo = line_mode = 1; 44} 45 46void TNetwork::SetPipe(HANDLE pIn, HANDLE pOut) { 47 pipeIn = pIn; 48 pipeOut = pOut; 49 net_type = TN_NETPIPE; 50 local_echo = line_mode = 0; 51} 52 53int TNetwork::WriteString(const char *str, const int length) { 54 switch(net_type) { 55 case TN_NETSOCKET: 56 return send(socket, str, length, 0); 57 case TN_NETPIPE: 58 { 59 DWORD dwWritten; 60 if(!WriteFile(pipeOut, str, length, &dwWritten, (LPOVERLAPPED)NULL)) return -1; 61 return dwWritten; 62 } 63 } 64 return 0; 65} 66 67int TNetwork::ReadString (char *str, const int length) { 68 switch(net_type) { 69 case TN_NETSOCKET: 70 return recv(socket, str, length, 0); 71 case TN_NETPIPE: 72 { 73 DWORD dwRead; 74 if(!ReadFile(pipeIn, str, length, &dwRead, (LPOVERLAPPED)NULL)) return -1; 75 return dwRead; 76 } 77 } 78 return 0; 79} 80 81void TNetwork::do_naws(int width, int height) { 82 if(!naws_func) return; 83 char buf[100]; 84 int len = (*naws_func)(buf, width, height); 85 WriteString(buf, len); 86} 87 88void TNetwork::SetLocalAddress(char *buf) { 89 local_address = new char[strlen(buf) + 1]; 90 strcpy(local_address, buf); 91} 92