Socket->RemoteHost出现卡顿现象

u010664458 2016-07-12 06:21:50
void __fastcall TMainForm::ServerSocket1ClientRead(TObject *Sender,
TCustomWinSocket *Socket)
{

AnsiString strCmd = Socket->ReceiveText();
//AnsiString ip = Socket->RemoteAddress;
AnsiString name = Socket->RemoteHost; //该句出现卡顿,大概1~2秒
}

Server端是Win7,若Client也为Win7,则不出现卡顿;若Client为XP,则卡顿!
...全文
210 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
draculamx 2016-07-31
  • 打赏
  • 举报
回复
实在想获取远程主机的名称的话,就和1楼说的一样,远程主机发信息到服务器的时候,把自己的主机名称写在发送的字节流最后面就行了。。服务器收到字节流之后,直接获取对方的主机名即可。这样就不用管操作系统的版本什么的了。。。
u010664458 2016-07-20
  • 打赏
  • 举报
回复
引用 6 楼 FASM_FASM 的回复:
因为windows系统自Vista开始起采用了一种新的名称解析协议(LLMNR),所以高版本系统可以互相快速发现。而低版本系统(XP及以下)还是要靠DNS和NETBIOS来处理。 具体详见: http://drops.wooyun.org/papers/10887
感谢FASM_FASM的回复!现在进行了测试,Win10当服务器,Win7当客户端,仍然在卡顿。没有进行代码跟踪,不确定还是不是Socket->RemoteHost的问题,但现象是一样的。 最后放弃了,还是听FASM_FASM的,不进行远程主机的获取了。
FASM_FASM 2016-07-19
  • 打赏
  • 举报
回复
因为windows系统自Vista开始起采用了一种新的名称解析协议(LLMNR),所以高版本系统可以互相快速发现。而低版本系统(XP及以下)还是要靠DNS和NETBIOS来处理。 具体详见: http://drops.wooyun.org/papers/10887
u010664458 2016-07-18
  • 打赏
  • 举报
回复
还有人能给出合理的解释吗?关键是Server 和Client操作系统不同,则会出现卡顿。操作系统相同,则不会出现卡顿。
FASM_FASM 2016-07-14
  • 打赏
  • 举报
回复
引用 2 楼 u010664458 的回复:
主机名不是直接写到Socket里了吗?为什么还要通过IP获得对应的主机名呢?
表示没听说过主机名写到Socket里这件事。
FASM_FASM 2016-07-13
  • 打赏
  • 举报
回复
要获得主机名的话,最好让客户端自报家门好了。不然的话从IP获得对应的主机名是要去DNS服务器查询的,更早的windows系统甚至要查询wins服务器。当然慢了。
u010664458 2016-07-13
  • 打赏
  • 举报
回复
而且如果服务器和客户端都是Win7,则不会卡顿,如果客户端是XP就会卡顿。
u010664458 2016-07-13
  • 打赏
  • 举报
回复
主机名不是直接写到Socket里了吗?为什么还要通过IP获得对应的主机名呢?

1,317

社区成员

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

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