tnetwork.cpp
上传用户:haiweijt
上传日期:2018-02-23
资源大小:8195k
文件大小:3k
- ///////////////////////////////////////////////////////////////////////////////
- //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);
- }