资源简介
MFC实现的Telnet客户端程序,需要通过telnet连接设备的开发者可以参考下
代码片段和文件信息
/*-------------------------------------------
TelnetClient.cpp -- WinSock telnet client
(c) Ma Jihong 2012-12-31
-------------------------------------------*/
#include
#include
#include
#include
#pragma comment(lib “ws2_32.lib“)
#define BUF_SIZE 1024
const unsigned char IAC = 255;
const unsigned char DONT = 254;
const unsigned char DO = 253;
const unsigned char WONT = 252;
const unsigned char WILL = 251;
const unsigned char SB = 250;
const unsigned char SE = 240;
enum STATE{STATE_DATA STATE_IAC STATE_OPTION STATE_SUBOPT};//解析服务器的信息时的各种状态
enum VERB{VERB_WILL VERB_WONT VERB_DO VERB_DONT};//记录服务器选项协商的常量
enum OPTION{ECHO = 1 SGA = 3 TERMTYPE = 24}; //要处理的选项协商的常量
enum ANSI_STATE{S_DATA S_ESC S_ESC0}; //解析ANSI控制码的 各种状态
enum {IS = 0 SEND = 1}; //终端子选项的常量
char escbuf[BUF_SIZE]; //储存ANSI控制码的缓冲区
void ParseMessage(unsigned char); //解析服务器接受的信息
void EchoOpt(unsigned char verb); //对回显选项协商的应答
void SGAOpt(unsigned char verb); //对抑制继续进行选项协商的应答
void TermOpt(unsigned char verb); //对终端类型选项协商的应答
void RecvData(unsigned char ch); //对接收的数据信息的处理
void ParseESC(char*char); //解析ANSI控制码
void SendReply(unsigned char unsigned char); //选项协商的应答
void SendNoReply(unsigned char unsigned char); //对不感兴趣的选项协商的否定应答
void SendTermType(); //发送本地终端类型这里是ANSI
void ansi_set_screen_attribute(int* int); //设置显示文本的前景色和背景色
void ansi_set_cursor_position(int* int); //设置光标的位置
void ansi_clear_screen(int* int); //清屏
void ansi_erase_line(); //清除从光标开始到行末
void ansi_cursor_up(int); //光标上移
void ansi_cursor_down(int); //光标下移
void ansi_cursor_backward(int); //光标左移
void ansi_cursor_forward(int); //光标右移
int SendData(SOCKET sock char* sendbuf int sendlen); //向服务器发送信息
char* ltrim(char*); //用户输入时,去掉输入串左边的空白符
char* rtrim(char*); //用户输入时,去掉输入串右边的空白符
void getip(char* int); //得到用户输入的ip或域名
DWORD WINAPI SendProc(LPVOID lpParemeter); //发送信息线程函数
DWORD WINAPI RecvProc(LPVOID lpParemeter); //接受信息线程函数
HANDLE hstdin;
HANDLE hstdout;
SOCKET sock;
int main()
{
WSADATA wsaData;
SOCKADDR_IN srvaddr;
HANDLE hThread[2];
int ret;
hostent remotehost*phostent;
char strIP[80];
phostent = &remotehost;
hstdin = GetStdHandle(STD_INPUT_HANDLE);
hstdout = GetStdHandle(STD_OUTPUT_HANDLE);
FlushConsoleInputBuffer(hstdin);//注意,初始化刷新输入缓冲区
COORD bufsize = {100 40};
SetConsoleScreenBufferSize(hstdout bufsize);
ret = WSAStartup(MAKEWORD(2 2) &wsaData);
if(ret != 0)
{
printf(“加载套接字库失败\n“);
return -1;
}
if(LOBYTE(wsaData.wVersion) != 2 ||
HIBYTE(wsaData.wVersion) != 2)
{
printf(“套接字库版本不一致\n“);
WSACleanup();
return -1;
}
sock = socket(AF_INET SOCK_STREAM IPPROTO_TCP);
if(sock == INVALID_SOCKET)
{
printf(“创建套接字失败\n“);
WSACleanup();
return -1;
}
getip(strIP 80);
if(strIP[0] >= ‘0‘ && strIP[0] <= ‘9‘)
{
srvaddr.sin_addr.S_un.S_addr = inet_addr(st
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 40960 2013-01-01 15:46 TelnetTest\Debug\TelnetTest.exe
文件 458648 2013-01-01 15:46 TelnetTest\Debug\TelnetTest.ilk
文件 535552 2013-01-01 15:46 TelnetTest\Debug\TelnetTest.pdb
文件 10498 2013-01-01 15:46 TelnetTest\TelnetTest\Debug\BuildLog.htm
文件 68267 2013-01-01 15:46 TelnetTest\TelnetTest\Debug\main.obj
文件 65 2013-01-01 15:46 TelnetTest\TelnetTest\Debug\mt.dep
文件 663 2012-12-10 14:03 TelnetTest\TelnetTest\Debug\TelnetTest.exe.em
文件 728 2012-12-10 14:03 TelnetTest\TelnetTest\Debug\TelnetTest.exe.em
文件 621 2013-01-01 15:46 TelnetTest\TelnetTest\Debug\TelnetTest.exe.intermediate.manifest
文件 363520 2013-01-01 15:46 TelnetTest\TelnetTest\Debug\vc90.idb
文件 126976 2013-01-01 15:46 TelnetTest\TelnetTest\Debug\vc90.pdb
文件 16259 2013-01-01 14:26 TelnetTest\TelnetTest\main.cpp
文件 3922 2012-12-18 16:52 TelnetTest\TelnetTest\TelnetTest.vcproj
文件 1415 2013-01-01 16:14 TelnetTest\TelnetTest\TelnetTest.vcproj.xiaoma-PC.Administrator.user
文件 14085120 2013-01-01 16:14 TelnetTest\TelnetTest.ncb
文件 896 2012-12-10 13:41 TelnetTest\TelnetTest.sln
..A..H. 9728 2013-01-01 16:14 TelnetTest\TelnetTest.suo
目录 0 2013-01-01 15:46 TelnetTest\TelnetTest\Debug
目录 0 2012-12-30 16:05 TelnetTest\Debug
目录 0 2013-01-01 14:26 TelnetTest\TelnetTest
目录 0 2012-12-31 15:46 TelnetTest
----------- --------- ---------- ----- ----
15723838 21
- 上一篇:accelerate c++ 英文版
- 下一篇:传智播客C语言提高讲义2018最新
评论
共有 条评论