reactos/rosapps/net/telnet/src/tnetwork.cpp
Steven Edwards c98929fa7e New Telnet Client
svn path=/trunk/; revision=2458
2001-12-30 10:05:48 +00:00

91 lines
No EOL
2.4 KiB
C++

///////////////////////////////////////////////////////////////////////////////
//Telnet Win32 : an ANSI telnet client.
//Copyright (C) 1998-2000 Paul Brannan
//Copyright (C) 1998 I.Ioannou
//Copyright (C) 1997 Brad Johnson
//
//This program is free software; you can redistribute it and/or
//modify it under the terms of the GNU General Public License
//as published by the Free Software Foundation; either version 2
//of the License, or (at your option) any later version.
//
//This program is distributed in the hope that it will be useful,
//but WITHOUT ANY WARRANTY; without even the implied warranty of
//MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
//GNU General Public License for more details.
//
//You should have received a copy of the GNU General Public License
//along with this program; if not, write to the Free Software
//Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
//
//I.Ioannou
//roryt@hol.gr
//
///////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
//
// Module: tnetwork.cpp
//
// Contents: telnet network module
//
// Product: telnet
//
// Revisions: March 18, 1999 Paul Brannan (pbranna@clemson.edu)
//
///////////////////////////////////////////////////////////////////////////////
#include "tnetwork.h"
void TNetwork::SetSocket(SOCKET s) {
socket = s;
net_type = TN_NETSOCKET;
local_echo = line_mode = 1;
}
void TNetwork::SetPipe(HANDLE pIn, HANDLE pOut) {
pipeIn = pIn;
pipeOut = pOut;
net_type = TN_NETPIPE;
local_echo = line_mode = 0;
}
int TNetwork::WriteString(const char *str, const int length) {
switch(net_type) {
case TN_NETSOCKET:
return send(socket, str, length, 0);
case TN_NETPIPE:
{
DWORD dwWritten;
if(!WriteFile(pipeOut, str, length, &dwWritten, (LPOVERLAPPED)NULL)) return -1;
return dwWritten;
}
}
return 0;
}
int TNetwork::ReadString (char *str, const int length) {
switch(net_type) {
case TN_NETSOCKET:
return recv(socket, str, length, 0);
case TN_NETPIPE:
{
DWORD dwRead;
if(!ReadFile(pipeIn, str, length, &dwRead, (LPOVERLAPPED)NULL)) return -1;
return dwRead;
}
}
return 0;
}
void TNetwork::do_naws(int width, int height) {
if(!naws_func) return;
char buf[100];
int len = (*naws_func)(buf, width, height);
WriteString(buf, len);
}
void TNetwork::SetLocalAddress(char *buf) {
local_address = new char[strlen(buf) + 1];
strcpy(local_address, buf);
}