两个问题........(如果解决,给200分)

lifuming 2002-07-10 11:20:09
第一个问题:
动态创建的Button怎样给它定义一个Click事件,特别是获取它的Button->Name

第二个问题:
怎样获取网(不是局域网,而是Internet)上某一计算机的IP地址,实现用TServerSocket 和 TClientSocket向它发消息(类似于OICQ里面的可以随时向任何在线的网上计算机发布信息,这个信息可能是面向一个用户,也有可能是面向所有用户)。

...全文
15 33 打赏 收藏 转发到动态 举报
写回复
用AI写文章
33 条回复
切换为时间正序
请发表友善的回复…
发表回复
大大怪老张 2002-09-16
  • 打赏
  • 举报
回复
你可以看看这个

http://www.iduba.net/secure_channel/defence_skill/2002/06/03/13383.htm
大大怪老张 2002-09-16
  • 打赏
  • 举报
回复
第二个问题,你可以借鉴反弹端口木马,通常的木马,比如最早的冰河(新版本没太关注过,不过不是原来作者开发的了),使用客户主动连接方式,这样就需要知道服务器的ip地址.如果服务器端有防火墙或者对方是个高手,发现木马的痕迹,就会采取措施,使客户无法连接.反弹端口木马就是采用服务器端主动连接,有个比较著名的netthief就是用这种方式的.这种方式的隐蔽性要高,因为很多防火墙都是对外部网络比较注意,而对内部就松的多了.但它也有缺点,它需要一个网上的一个固定空间来中转ip地址,就象茫茫人海的两个陌生人,要相识,肯定要因为某种缘由才行. 不过现在这两种方式都不太灵了,防毒软件公司速度很快.而且个人防火墙的功能也很强。这里强烈推荐金山公司的金山毒霸和金山网镖.

至于楼主提到的qq的广播消息,可以利用upd协议,非面向连接,可以通过网关,这些特性是由协议本身决定的,跟实现无关.具体可以查阅相应的rfc文档.
Hawk_sun 2002-09-16
  • 打赏
  • 举报
回复
对于第二个问题,理论上还是有点难度,要考虑到跨网段以及通过代理网关上网的种种可能!
chinagy 2002-09-16
  • 打赏
  • 举报
回复
第一个问题:
先动态创建一个铵钮:
Form1::FormCreate(TObject *Sender)
{
TButton *mybutton = new TButton(this);
mybutton->Name ="mybutton"+IntToStr(i);
mybutton->Parent = this;
mybutton->OnClick=MyButtonClick; //定义点击事件
....

}
//---------------------------------------------------------------
void __fastcall TForm1::MyButtonClick(TObject * Sender)
{
TButton *tmpButton;
AnsiString tmp;

tmpButton = (TButton *) Sender;

tmp= tmpButton->Name;
ShowMessage(tmp);
}
lingbin 2002-09-16
  • 打赏
  • 举报
回复
关注。
lifuming 2002-07-12
  • 打赏
  • 举报
回复
第一个问题我可以结单了,但是第二个问题呢,有谁能解决......
yphy 2002-07-11
  • 打赏
  • 举报
回复
up
Gucai 2002-07-11
  • 打赏
  • 举报
回复
第一个问题(刚好我昨天搜索时看到了):
回复人: FIGLAB(无花果) ( ) 信誉:100 2001-10-20 19:31:27 得分:47

for(i = 0;i<= ADOQuery1->RecordCount;i++)
{
TButton *mybutton = new TButton(this);
mybutton->Name ="mybutton"+IntToStr(i);
mybutton->Top = 72*j;
mybutton->Left = 16*i;
mybutton->Width = 75;
mybutton->Height = 25;
mybutton->Parent = this;
mybutton->OnClick=mybutton_click; //定义点击事件
}

void __fastcall TForm1::mybuttonclick(TObject *Sender)
{
//点击事件处理代码
}

//要用到它的方法(比如设置焦点):
for (int i=0;i<ComponentCount;i++)
if(Components[i]->Name=="mybutton1")
{
TButton* button;
button=(TButton*)Components[i];
button->SetFocus();
}

第二个问题我也想知道:-$
Behard 2002-07-11
  • 打赏
  • 举报
回复
mark
你太懒了
lifuming 2002-07-11
  • 打赏
  • 举报
回复
各位我所需要的是源码..............
猛禽 2002-07-10
  • 打赏
  • 举报
回复
1.用:
TButton * p = dynamic_cast<TButton *>( Sender );
if ( p )
ShowMessage( p->Name ); // 显示Button.Name

2.除非有服务器,否则不太可能实现,因为在Internet中是不能用广播来找的。
短歌如风 2002-07-10
  • 打赏
  • 举报
回复
TClientSocket的Host属性可以直接使用主机名,不过不支持代理。
短歌如风 2002-07-10
  • 打赏
  • 举报
回复
TClientSocket的Host属性可以直接用主机名进行连接。不过不能使用代理。
短歌如风 2002-07-10
  • 打赏
  • 举报
回复
在Button的OnClick事件中有一个Sender属性,它就是触发事件的Button.
lifuming 2002-07-10
  • 打赏
  • 举报
回复
第一个问题如果有源吗,能给出来吗?
第二个问题同志尚需努力
ddeng 2002-07-10
  • 打赏
  • 举报
回复
哪一个Button呢?TObject *Sender参数啊!
hbxtx 2002-07-10
  • 打赏
  • 举报
回复
不是有个名字吗?
lifuming 2002-07-10
  • 打赏
  • 举报
回复
第一个问题似乎明白了,但是如果知道我所点击的是哪一个Button呢?
书生 2002-07-10
  • 打赏
  • 举报
回复
Mark@_@
书生 2002-07-10
  • 打赏
  • 举报
回复
Mark@_@
加载更多回复(13)

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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