windowxp和window2000的telnet客户端有什么不同吗?

gary 2003-12-12 05:58:59
我写了一个telnet的服务端程序,但用window2000的telnet的客户端时都是一样的。用windowxp的telnet的客户端时,每敲一个键,屏幕上同时显示两个字符,难道window2000的telnet的客户端和windowxp的telnet有什么不同吗?
...全文
100 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
gary 2003-12-24
  • 打赏
  • 举报
回复
你这是看的服务器端的,我是想在服务器端知道telnet上来的客户端的操作系统类型
warton 2003-12-23
  • 打赏
  • 举报
回复
enum下定义了操作系统类型
if(IsShellSysType()==Windows2000)//判断是2000
warton 2003-12-23
  • 打赏
  • 举报
回复
if(IsShellSysType()==Windows2000||IsShellSysType()==WindowsXP||IsShellSysType()==WindowsNT4)
{.....
warton 2003-12-23
  • 打赏
  • 举报
回复
//耞巨╰参
typedef enum tagWin32SysType{
Windows32s,
WindowsNT3,
Windows95,
Windows98,
WindowsME,
WindowsNT4,
Windows2000,
WindowsXP
}Win32SysType;



//耞巨╰参瞇计の跑秖jingzhou xu

Win32SysType IsShellSysType()
{
Win32SysType ShellType;
DWORD winVer;
OSVERSIONINFO *osvi;
winVer=GetVersion();
if(winVer<0x80000000){/*NT */
ShellType=WindowsNT3;
osvi= (OSVERSIONINFO *)malloc(sizeof(OSVERSIONINFO));
if (osvi!=NULL){
memset(osvi,0,sizeof(OSVERSIONINFO));
osvi->dwOSVersionInfoSize=sizeof(OSVERSIONINFO);
GetVersionEx(osvi);
if(osvi->dwMajorVersion==4L)ShellType=WindowsNT4;
else if(osvi->dwMajorVersion==5L&&osvi->dwMinorVersion==0L)ShellType=Windows2000;
else if(osvi->dwMajorVersion==5L&&osvi->dwMinorVersion==1L)ShellType=WindowsXP;
free(osvi);
}
}
else if (LOBYTE(LOWORD(winVer))<4)
ShellType=Windows32s;
else{
ShellType=Windows95;
osvi= (OSVERSIONINFO *)malloc(sizeof(OSVERSIONINFO));
if (osvi!=NULL){
memset(osvi,0,sizeof(OSVERSIONINFO));
osvi->dwOSVersionInfoSize=sizeof(OSVERSIONINFO);
GetVersionEx(osvi);
if(osvi->dwMajorVersion==4L&&osvi->dwMinorVersion==10L)ShellType=Windows98;
else if(osvi->dwMajorVersion==4L&&osvi->dwMinorVersion==90L)ShellType=WindowsME;
free(osvi);
}
}
return ShellType;
}
gary 2003-12-23
  • 打赏
  • 举报
回复
怎么判断操作系统呢?
netsys2 2003-12-22
  • 打赏
  • 举报
回复
可能是有差别。。。
gary 2003-12-15
  • 打赏
  • 举报
回复
两位大哥,我试过了,在windowsXP上关调回显也是一样的。
在我的telnet中向client端写是这样一个函数
int nBytesThisTime = m_nReadBuf;
int nLineLength = 0;
char* pch1 = m_pReadBuf;
char* pch2;
do {
// look for lf (assume preceded by cr)
if((pch2 = (char*) memchr(pch1 , '\n', nBytesThisTime)) != NULL) {
ASSERT((pch2) > m_pReadBuf);
ASSERT(*(pch2 - 1) == '\r');
nLineLength = (pch2 - m_pReadBuf) + 1;
if(nLineLength >= nSize) nLineLength = nSize - 1;
memcpy(pch, m_pReadBuf, nLineLength); // copy the line to caller
m_nReadBuf -= nLineLength;
memmove(m_pReadBuf, pch2 + 1, m_nReadBuf); // shift remaining characters left
break;
}
pch1 += nBytesThisTime;
nBytesThisTime = Receive(m_pReadBuf + m_nReadBuf, nSizeRecv - m_nReadBuf, iTimeLimit);
if(nBytesThisTime <= 0) { // sender closed socket or line longer than buffer

return nBytesThisTime;
}

if (Write(m_pReadBuf + m_nReadBuf,nBytesThisTime)<0)
{
return -1;
}


m_nReadBuf += nBytesThisTime;
}
while(TRUE);
*(pch + nLineLength-2) = '\0'; //add rest of buffer, and remove lfcr
return nLineLength;

如果不加if (Write(m_pReadBuf + m_nReadBuf,nBytesThisTime)<0)
{
return -1;
}
在window2000上就没有回显,但加了在windownxp的客户端就有两个回显
warton 2003-12-15
  • 打赏
  • 举报
回复
那就不知道了,可以判断操作系统然后确定加不加回显!
上次我调试t-cmd的代码,那个也是在2000下没有回显,后来自己加了一个。
BCBChina 2003-12-14
  • 打赏
  • 举报
回复
肯定是回显打开了!
netsys2 2003-12-12
  • 打赏
  • 举报
回复
是否把telnet回显打开了?

1,316

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 网络及通讯开发
社区管理员
  • 网络及通讯开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧