熟悉 telnet 的大侠请进!!!(200分)

  • 主题发起人 主题发起人 OopsWare
  • 开始时间 开始时间
O

OopsWare

Unregistered / Unconfirmed
GUEST, unregistred user!
最近在做中文的Telnet(基本完成)
可仿真scoansi(彩色)

但在 vi 中显示中文有问题(区位码以8进制显示)!
如何通讯使TelnetServer传来区位码!?
还是强行将例如“/200/200”的8进制数传为汉字(好像不可取)?

SOS...
 
admire oopsware
我的一个项目中要用到telnet能否提供一点帮助?
 
to sonie:
TELNET 通讯较简单但用到RFC,简单的说用到TCP/IP Socket的非阻塞通讯。
与主机连接后,首先有一段RFC对话(字节数一般为3的倍数,包含TNL_SB除外)
即:命令、选项、参数。
值如下:
{ Telnet command characters }
TNL_IAC = #$FF; // IAC
TNL_DONT = #$FE; // Don't
TNL_DO = #$FD; // Do
TNL_WONT = #$FC; // Wont
TNL_WILL = #$FB; // Will
TNL_SB = #$FA; // Subnegociation
TNL_GA = #$F9; // Go ahead
TNL_EL = #$F8; // Erase line
TNL_EC = #$F7; // Erase character
TNL_AYT = #$F6; // Are you there
TNL_AO = #$F5; // Abort output
TNL_IP = #$F4; // Interrupt process
TNL_BREAK = #$F3; // charcater break
TNL_DATA_MARK = #$F2; // Data stream portion of a Synch
TNL_NOP = #$F1; // No operation
TNL_SE = #$F0; // End of subnegociation parameters
TNL_EOR = #$EF; // End Of Record (preceded by IAC)
{ Telnet options }
TNO_TRANSMIT_BINARY = #$00;
TNO_ECHO = #$01;
TNO_RECONNECTION = #$02;
TNO_SUPPRESS_GA = #$03;
TNO_MSG_SZ_NEGOC = #$04;
TNO_STATUS = #$05;
TNO_TIMING_MARK = #$06;
TNO_NOPTIONS = #$06;
TNO_DET = #$14;
TNO_SEND_LOC = #$17;
TNO_TERMTYPE = #$18;
TNO_EOR = #$19;
TNO_NAWS = #$1F;
TNO_TERMSPEED = #$20;
TNO_TFC = #$21;
TNO_XDISPLOC = #$23;
TNO_EXOPL = #$FF;
{ TTY type }
TNTT_SEND = #1;
TNTT_IS = #0;

此段对话用于验证设置终端参数。对话完毕,以后的通讯终端按键将按键值发给
主机(功能键以终端仿真的不同而不同,如上箭头在ansi终端上为<ESC>[A),
接受的数据显示于屏幕(<ESC>为控制符开始标识,详情见SCO OpenServer 5中的
SCREEN帮助“# man screen<RC>”)。

我以将以上的功能做成控件(自认为比ICS的强(指中文方面)!)

如不想费力,可向我要其原码。

问题继续!!!
 
我想要,但给您发Email,报错!
 
give me one copy!
 
please give me a copy, ok?
bati@netease.com
 
me too ,thanks
zws13@sina.com
 
给我一份行吗?我最近正在学TELNET协议,很多细节还没搞明白,希望能跟你学习!
Flyingfox@sohu.com
 
需要的朋友可在此<A HREF="http://www.qzone.com/home/w/wi/wind2000/delphi/vcls/SinoTelnet.zip">下载</A>,感谢Wind2000!

原程序错误:
OopsConsole.pas 中 ProcessCSI_H 有点问题(vi 中显示错误)
修改如下:

procedure TOopsConsole.ProcessCSI_H;
var From, Row, Col : Integer;
begin
if FEscBuffer[2]='=' then begin { Sets reverse foreground }
FAttr:=FAttr xor ATTR_FCOLOR;
end else begin
From:=GetEscapeParam(2, Row); { ^[H (Row=0)Cursor and selects graphic }
while (From<=Length(FEscBuffer))and(FEscBuffer[From]=' ') do Inc(From);
if FEscBuffer[From]=';' then GetEscapeParam(From+1, Col) else Col:=1;
GotoXY(Col-1, Row-1);
end;
end;
 
刚建好<a href="http://oopsware.qzone.com">主页</a>,需要的朋友去那儿下吧!

 
vi中的问题以解决!

又发现新问题了
1):中文输入法无法实现光标跟随!
2):连接Linux出错!

请帮解决!

 
看来没人能帮上忙了,但见者有份!
 
正式版1.01已发布,需要的话去 <a href="http://oopsware.qzone.com">http://oopsware.qzone.com</a>下。
 
多人接受答案了。
 
有几个变量明明定义成const为什么还在赋值?我土,请介绍一下。
 
这是Delphi6以上版本的一个功能。你可以把WRITEABLECONST 改为ON 即可。
 
后退
顶部