mirror of
https://github.com/reactos/reactos.git
synced 2024-12-28 01:55:19 +00:00
c98929fa7e
svn path=/trunk/; revision=2458
91 lines
No EOL
2.4 KiB
C++
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);
|
|
} |