星期五, 六月 29, 2007

关于WINFORM中输入法的设置 - johnsuna(阿山NET)的专栏 - CSDNBlog - 已使用 Google 工具栏发送

关于WINFORM中输入法的设置 - johnsuna(阿山NET)的专栏 - CSDNBlog


关于WINFORM中输入法的设置

在WINFORM中我们经常遇到文本输入框中输入法被禁用或老是变全角输入法等问题,经查阅相关资料,现小结如下:

(一)Control.ImeMode 属性:获取或设置控件的输入法编辑器 (IME) 模式。 
(1)由于窗体属性继承关系,如果你的WINFORM窗体中大部分需要设置为输入法有效状态,可以设置为FORM的ImeMode属性为On.
(2)如果需要某些TextBox为输入法有效,则使用ImeMode.On
(3)如果需要设置整个窗体的输入法全部为半角,可以使用以下代码:
 #region 修正输入法全角/半角的问题
        //声明一些API函数  
        [DllImport("imm32.dll")]
        public static extern IntPtr ImmGetContext(IntPtr hwnd);
        [DllImport("imm32.dll")]
        public static extern bool ImmGetOpenStatus(IntPtr himc);
        [DllImport("imm32.dll")]
        public static extern bool ImmSetOpenStatus(IntPtr himc, bool b);
        [DllImport("imm32.dll")]
        public static extern bool ImmGetConversionStatus(IntPtr himc, ref   int lpdw, ref   int lpdw2);
        [DllImport("imm32.dll")]
        public static extern int ImmSimulateHotKey(IntPtr hwnd, int lngHotkey);
        private const int IME_CMODE_FULLSHAPE = 0x8;
        private const int IME_CHOTKEY_SHAPE_TOGGLE = 0x11;
        protected override void OnActivated(EventArgs e)
        {
            base.OnActivated(e);
            IntPtr HIme = ImmGetContext(this.Handle);    
            //如果输入法处于打开状态 
            if (ImmGetOpenStatus(HIme))
            {
                int iMode = 0;
                int iSentence = 0;
                //检索输入法信息  
                bool bSuccess = ImmGetConversionStatus(HIme, ref   iMode, ref   iSentence);    
                if (bSuccess)
                {
                    //如果是全角,转换成半角 
                    if ((iMode & IME_CMODE_FULLSHAPE) > 0)       
                        ImmSimulateHotKey(this.Handle, IME_CHOTKEY_SHAPE_TOGGLE);       
                }

            }
        }
       
......


详细内容...

Google发布Desktop软件β版 进军开源平台 , 操作系统,google,linux, , - CSDN 新闻 - 已使用 Google 工具栏发送

Google发布Desktop软件β版 进军开源平台 , 操作系统,google,linux, , - CSDN 新闻


  6月29日消息,本周四,搜索巨头 Google终于将触角延伸到了开放资源平台,发布了基于Linux操作系统的Google Desktop软件服务β测试版,这也意味着未来开放资源操作系统用户也可以享受Google提供的文档搜索、电子邮件以及Gmail服务。

  据vnunet报道,不过Linux版本的软件中将不会整合小工具和工具栏,后者在Windows和苹果Mac操作系统中都被包括了。"我们将主要精力投入到桌面搜索功能,因此其他工具和工具栏并不被支持,不过随着时间的推移,未来公司有可能将这些功能整合在最终版的软件包中。"Google公司发言人表示。据悉,此次不被包括的小工具主要包括:新闻头条更新和电子邮件消息,以及系统内存和CPU使用情况等。前两者帮助用户在使用电脑的过程中,随时监控新闻和邮件方面的变化。

  据悉,此次发布的β测试版将针对Debian 4.0,Fedora Core 6,Mandriva,Ubuntu 6.10和SuSE10.1以及Red Hat 5几个版本的Linux操作系统。另一方面,Google还将Picasa Google Earth和Google Toolbar整合到了Linux平台的火狐浏览器软件中。不过,考虑到Picasa服务依赖于Wine Windows模拟器技术,因此Linux版本中的软件被重新设计。目前为止,搜索巨头并未透露软件最终版本的发布时间,公司仅仅表示希望搜集尽可能多的用户反馈,以次来保证软件的功能和质量, 在发布1.0最终正式版的时候,可以完全满足用户的实际需求。


......


详细内容...

星期四, 六月 28, 2007

新版Google Docs登场 新增侧边管理栏以及文件夹功能 - 使用 Google 工具栏进行发送


Google刚刚推出了新版Google Docs在线办公服务。

新Google Dosc此次在界面和功能上进行了大幅改进,终于加入了侧边管理栏以及文件夹功能,大大方便了文档整理以及查找。

不过,新文件夹系统的推出并不意味着Google Docs将放弃原有的Tag标签系统,目前在Google Docs中,文件夹与Tags系统依然共存使用。

让用户更为关注的是,Google用户量最高的非搜索产品GMail是否也会进行类似的改进,已经有不少Gmail用户对Google Docs的新界面产生了浓厚兴趣。


......


详细内容...

星期三, 六月 27, 2007

谷歌中国推首个全球产品:Linux版桌面搜索 - 已使用 Google 工具栏发送


谷歌中国宣布推出首个面向全球的产品Linux版桌面搜索,该产品在一个文件包内包含了10种语言版本。

  据悉,谷歌Linux版桌面搜索相比windows版桌面搜索最大的不同为,Linux版桌面搜索支持用户电脑中文件的"实时索引",该功能由已经加入谷歌的前Novel Linux desktop首席架构师Robert Love开发,此外谷歌Linux版桌面搜索支持linux下常用邮件客户端中的邮件。

  据谷歌公司表示,该产品完全由谷歌中国的Linux团队主导开发,该团队目前有程序员7人,专门开发针对全球的开源产品,此次发布的Linux桌面搜索虽因涉及谷歌的核心技术而没有开源,但是未来的产品会考虑逐渐开源。(


......


详细内容...

星期二, 六月 19, 2007

◎化学性食物中毒

化学性食物中毒,主要指一些有毒的金属,非金属及其化合物,农药和亚硝 酸盐等化学物质污染食物而引起的食物中毒。引起化学性食物中毒的原因, 主要是误食有毒化学物质,或食入被化学物质污染的食物所致。 化学性食物中毒的特征主要有:

(一)发病快。潜伏期较短,多在数分钟至数小时,少数也有超过一天的。

(二)中毒程度严重,病程比细菌性毒素中毒长,发病率和死亡率较高。

(三)季节性和地区性均不明显,中毒食品无特异性,多为误食或食入被化学物质污染的食品而引起,其偶然性较大。

◎细菌性食物中毒

细菌性食物中毒,是人们吃了含有大量活的细菌或细菌毒素的食物,而引起 的食物中毒,是食物中毒中最常见的一类。 这类食物中毒的特征主要有:

(一)通常有明显的季节性,多发生于气候炎热的季节,一般以5-10月份最多。 一方面由于较高的气温为细菌繁殖创造了有利条件;另一方面,这一时期内人 体防御能力有所降低,易感性增高,因而常发生细菌性食物中毒。

(二)引起细菌性食物中毒的食品,主要是动物性食品,如肉,鱼,奶和蛋类 等;少数是植物性食品,如余饭,糯米凉糕,面类发酵食品等。

(三)抵抗力降低的人,如病弱者,老人和儿童易发生细菌性食物中毒,发病 率较高,急性胃肠炎症较严重,但此类食物中毒病死率较低,愈后良好。

v避免食物中毒


◎不吃腐败变质的食品

腐败变质的食品是引发食物中毒的最大“祸源”。日常生活中,我们经常食用的奶制品、肉类食品以及一些剩余的饭菜,在加工、储藏、运输和销售的过程中,最容易被有害细菌感染,发生腐败变质。假如我们吃下了这类被污染了的食品,就会中毒,出现恶心、剧烈反复的呕吐、腹泻、上腹疼痛等现象。

避免这种中毒现象的发生,要以预防为主:

①储藏食品的时候,要把他们放在通风、低温的地方。

②剩余的饭菜吃之前要充分加热消毒,否则不能食用。

③从冰箱里拿出的熟食最好不直接食用,要经过加热后再吃。

④已经发馊变味的食品坚决倒掉。

⑤从商店买回的熟食、豆制品,吃前也要蒸煮加热。

⑥长时间储藏在冰箱里的食品不仅容易走失营养,也会发生变质。因此,在冰箱里长期储藏的不新鲜食品不要食用。

⑦买和食用食品之前,要仔细看清保质期,已经过期的食品不要购买、食用。

⑧买食品,尤其是直接食用的食品,一定要到有卫生安全保证的商店去购买,无证小贩出售的食品不要买。别忘了,唐伟的痛苦就来自于无证小贩的羊肉串。

⑨用自己的眼睛、口鼻分辨食品的好坏,如果发现食品的颜色变异、长有绿毛、霉斑,鼻嗅有酸腐气息,用舌尖舔尝有异味,可以断定食品已经变质,坚决不再食用。

万一不慎吃了腐败变质的食品引发食物中毒,要及时采取措施救治,具体方法是:

多喝淡盐水,让体内的毒物尽快随水分排出,需要特别注意的是,中毒后病人本身会产生呕吐、腹泻现象,这时不要立即止吐止泻。

如果中毒后,嘴唇皮肤发白、四肢冰凉、吐泻剧烈、血压下降出现休克,表明中毒者病情严重,必须迅速送往医院急救。

◎小心蔬菜中的毒素

新鲜蔬菜含有许多人体必需的养分,多吃蔬菜有益健康,这是众所周知的常识。但是,有一天,蔡虹同学好心给爸爸妈妈炒了一盘土豆丝,谁知,一家人吃了以后嗓子眼发烧,还恶心、呕吐。原来,蔡虹炒的土豆已经发芽了,他们全家人得的是马铃薯中毒症。

如此看来,吃蔬菜不小心也会引起中毒,因此不能不防。

要避免吃蔬菜中毒,首先需要了解哪些蔬菜、在哪种情况下会引起中毒,并有针对性地采取措施:

四季豆

色泽青绿没有煮的四季豆含有毒性,食用时要注意煮熟煮透,才能确保安全。要知道,因食用没煮熟煮透的四季豆而引起的食物中毒事件,在我国各类大大小小的食堂,几乎每年都要发生。

黄花菜

新鲜的黄花菜含有秋水仙碱,不能吃,必须经过清水充分浸泡、加工成干黄花之后才能使毒素溶出,供人食用。如果要吃新鲜黄花菜,务必先在开水中焯过,并将废水滤干。

木耳

新鲜木耳内也含有毒素,要经过充分晾晒、干燥后食用才安全。

毒蘑菇

色彩鲜艳的毒蘑菇含有剧毒,不能食用。

蓝紫色的紫菜

经过水发而呈现出蓝紫色的紫菜,是受到海中有毒物质污染的一种海菜,其中的毒性即使蒸煮也不能消除,因此不能食用。

有毒物质:为保管不得当,或者储存时间太长,发生腐烂变质,这时蔬菜内部便会产生有毒物质。这种烂菜不要食用。

发芽的马铃薯

马铃薯受热、受潮后容易发芽,产生剧毒龙葵素,因此对于发了芽的或者皮色是绿的、紫的、腐烂的马铃薯应该弃之不吃。

变质银耳

银耳久存后会出现霉点,青少年朋友吃后会发生中毒,不宜食用。

腐烂的韭菜、大白菜

韭菜和大白菜受到闷湿后容易腐烂,腐烂后的韭菜、大白菜中亚硝酸盐含量上升,食用后将导致中毒。

蔬菜残存农药导致中毒:蔬菜上残存的农药是导致日常食物中毒的一个重要因素。钟龙一家就曾因为吃了残存有农药的空心菜而发生食物中毒。现在一个孩子一天至少要吃一斤蔬菜,这就使得农药中毒更具有日常性。因此,我们决不能对残存在蔬菜上的农药掉以轻心。

避免蔬菜残存农药侵害我们身体的办法是,把蔬菜彻底洗净。科学实验证明,经过清水浸泡和洗洁精搓洗,能基本去掉蔬菜上的残存农药。

一些蔬菜混合食用产生毒物:一些蔬菜本身并没有毒素,但混合起来食用时就会产生有毒物质,并引起中毒,因此,在烹调时要注意将它们分开食用。较为常见的会导致混合食用中毒的蔬菜有:红薯与柿子合用、菠菜与豆腐合用等。

蔬菜中毒后的救治

一旦发生了蔬菜中毒,要立即进行排毒处理。中毒轻的患者可以大量饮用温开水,并且用手指抠按舌根,反复催吐;或者使用蕃泻叶泡水,喝下去催泻,使毒物尽快从体内排出。如果中毒严重,必须尽快送医院救治。

◎不吃霉变食品

霉变食品往往导致较为严重的中毒现象,不能不对此加倍防范。

霉变花生不能吃发霉的花生内含有大量可以致癌的黄曲霉素,因此在吃花生之前,要把那些已经变色、有苦味的霉花生挑出扔掉。万一吃到嘴里,要赶紧吐出,并且用清水漱口。

霉变甘蔗不能吃

霉变甘蔗内含有一种可怕的毒素,能损害人的中枢神经,导致中毒后死亡率高,并且现在还没有特效药能医治霉变甘蔗中毒患者。因此要加倍小心预防,发现甘蔗有霉变现象,一定不去食用。

万一出现霉变甘蔗中毒,应当迅速送往医院抢救。

◎养成良好卫生习惯

俗话说,“病从口入”。清洁的双手是防病入口的前提,个人养成良好的卫生习惯,也是避免食物中毒的好办法。对此,同学们应该做到以下几点:

饭前洗手,不用脏手拿食物。

及时清洗、消毒餐具。

不吃不卫生的食品。

勤剪指甲,不留污垢。

出入公共场所后要洗手。

探视病人之后要洗手。

v食物中毒的体症


食物中毒者最常见的症状是剧烈的呕吐、腹泻,同时伴有中上腹部疼痛。食物中毒者常会因上吐下泻而出现脱水症状,如口干、眼窝下陷、皮肤弹性消失、肢体冰凉、脉搏细弱、血压降低等,最后可致休克。

v食物中毒的家庭急救

催吐:如食物吃下去的时间在一至二小时内,可采取催吐的方法。立即取食盐二十克,加开水二百毫升,冷却后一次喝下。如不吐,可多喝几次,迅速促进呕吐。亦可用鲜生姜一百克,捣碎取汁用二百毫升温水冲服。如果吃下去的是变质的荤食品,则可服用十滴水来促进迅速呕吐。有的患者还可用筷子、手指或鹅毛等刺激咽喉,引发呕吐。

导泻:如果病人吃下去中毒的食物时间超过二小时,且精神尚好,则可服用些泻药,促使中毒食物尽快排出体外。一般用大黄三十克,一次煎服,老年患者可选用元明粉二十克,用开水冲服即可缓泻。老年体质较好者,也可采用番泻叶十五克,一次煎服,或用开水冲服,亦能达到导泻的 目的。

解毒:如果是吃了变质的鱼、虾、蟹等引起的食物中毒,可取食醋一百毫升,加水二百毫升,稀释后一次服下。此外,还可采用紫苏三十克、生甘草十克一次煎服,若是误食了变质的饮料或防腐剂,最好的急救方法是用鲜牛奶或其它含蛋白质的饮料灌服。

如果经上述急救,病人的症状未见好转,或中毒较重者,应尽快送医院治疗。在治疗过程中,要给病人以良好的护理,尽量使其安静,避免精神紧张,注意休息,防止受凉,同时补充足量的淡盐开水。控制食物中毒的关键在于预防,搞好饮食卫生,防止“病从口入”。


......


详细内容...

两台SQL Server数据同步解决方案-- 使用 Google 工具栏进行发送

两台SQL Server数据同步解决方案-太平洋电脑网Pconline-[数据库其它]

复制是将一组数据从一个数据源拷贝到多个数据源的技术,是将一份数据发布到多个存储站点上的有效方式。使用复制技术,用户可以将一份数据发布到多台服务器上,从而使不同的服务器用户都可以在权限的许可的范围内共享这份数据。复制技术可以确保分布在不同地点的数据自动同步更新,从而保证数据的一致性。
  
  SQL复制的基本元素包括
  
  出版服务器、订阅服务器、分发服务器、出版物、文章
  
  SQL复制的工作原理
  
  SQL SERVER 主要采用出版物、订阅的方式来处理复制。源数据所在的服务器是出版服务器,负责发表数据。出版服务器把要发表的数据的所有改变情况的拷贝复制到分发服务器,分发服务器包含有一个分发数据库,可接收数据的所有改变,并保存这些改变,再把这些改变分发给订阅服务器
  
  SQL SERVER复制技术类型
  
  SQL SERVER提供了三种复制技术,分别是:
  
  1、快照复制(呆会我们就使用这个)
  2、事务复制
  3、合并复制
  
  只要把上面这些概念弄清楚了那么对复制也就有了一定的理解。接下来我们就一步一步来实现复制的步骤。
  
  第一先来配置出版服务器
  
  (1)选中指定[服务器]节点
  (2)从[工具]下拉菜单的[复制]子菜单中选择[发布、订阅服务器和分发]命令
  (3)系统弹出一个对话框点[下一步]然后看着提示一直操作到完成。
  (4)当完成了出版服务器的设置以后系统会为该服务器的树形结构中添加一个复制监视器。同时也生成一个分发数据库(distribution)
  
  第二创建出版物
  
  (1)选中指定的服务器
  (2)从[工具]菜单的[复制]子菜单中选择[创建和管理发布]命令。此时系统会弹出一个对话框
  (3)选择要创建出版物的数据库,然后单击[创建发布]
  (4)在[创建发布向导]的提示对话框中单击[下一步]系统就会弹出一个对话框。对话框上的内容是复制的三个类型。我们现在选第一个也就是默认的快照发布(其他两个大家可以去看看帮助)
  (5)单击[下一步]系统要求指定可以订阅该发布的数据库服务器类型,SQLSERVER允许在不同的数据库如 ORACLE或ACCESS之间进行数据复制。但是在这里我们选择运行"SQL SERVER 2000"的数据库服务器
  (6)单击[下一步]系统就弹出一个定义文章的对话框也就是选择要出版的表
  (7)然后[下一步]直到操作完成。当完成出版物的创建后创建出版物的数据库也就变成了一个共享数据库。
  
  第三设计订阅
  
  (1)选中指定的订阅服务器
  (2)从[工具]下拉菜单中选择[复制]子菜单的[请求订阅]
  (3)按照单击[下一步]操作直到系统会提示检查SQL SERVER代理服务的运行状态,执行复制操作的前提条件是SQL SERVER代理服务必须已经启动。
  (4)单击[完成]。完成订阅操作。
  
  完成上面的步骤其实复制也就是成功了。但是如何来知道复制是否成功了呢?这里可以通过这种方法来快速看是否成功。展开出版服务器下面的复制――发布内容――右键发布内容――属性――击活――状态然后点立即运行代理程序接着点代理程序属性击活调度把调度设置为每一天发生,每一分钟,在0:00:00和23:59:59之间。接下来就是判断复制是否成功了打开C:\Program Files\Microsoft SQL Server\MSSQL\REPLDATA\unc\XIAOWANGZI_database_database下面看是不是有一些以时间做为文件名的文件夹差不多一分中就产生一个。要是你还不信的话就打开你的数据库看在订阅的服务器的指定订阅数据库下看是不是看到了你刚才所发布的表
......


详细内容...

星期一, 六月 18, 2007

SQL数据同步 - 使用 Google 工具栏进行发送


SQL数据同步

如何同步两个数据,包括同一个SQL服务器和不同一个SQL服务.

一般采用发布/订阅的方法,这个联机帮助上说得很清楚了,不是本贴的内容.

本贴提供两种手工同步的方法.
即时同步和定时同步.


已知的问题:
由于使用了分布式事务处理,而这个在部分情况(具体原因未查到,有很多贴子讨论这个问题,都没有找到原因)下是不能生效的.
因此,在不能正常使用的情况下,可以取消分布式事务处理
这个不影响处理,只是无法保证数据处理的完整性.

#2  

--即时同步两个表的实例:

--测试环境:SQL2000,远程主机名:xz,用户名:sa,密码:无,数据库名:test

--创建测试表,不能用标识列做主键,因为不能进行正常更新
--在本机上创建测试表,远程主机上也要做同样的建表操作,只是不写触发器
if exists (select * from dbo.sysobjects where id = object_id(N'[test]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [test]

create table test(id int not null constraint PK_test primary key
,name varchar(10))
go

--创建同步的触发器
create trigger t_test on test
for insert,update,delete
as
set  XACT_ABORT on
--启动远程服务器的MSDTC服务
exec master..xp_cmdshell 'isql /S"xz" /U"sa" /P"" /q"exec master..xp_cmdshell ''net start msdtc'',no_output"',no_output

--启动本机的MSDTC服务
exec master..xp_cmdshell 'net start msdtc',no_output

--进行分布事务处理,如果表用标识列做主键,用下面的方法
BEGIN DISTRIBUTED TRANSACTION
delete from openrowset('sqloledb','xz';'sa';'',test.dbo.test)
where id in(select id from deleted)
insert into openrowset('sqloledb','xz';'sa';'', test.dbo.test)
select * from inserted
commit tran
go

--插入数据测试
insert into test
select 1,'aa'
union all select 2,'bb'
union all select 3,'c'
union all select 4,'dd'
union all select 5,'ab'
union all select 6,'bc'
union all select 7,'ddd'

--删除数据测试
delete from test where id in(1,4,6)

--更新数据测试
update test set name=name+'_123' where id in(3,5)

--显示测试的结果
select * from test a full join
openrowset('sqloledb','xz';'sa';'',test.dbo.test) b on a.id=b.id

#3  

--定时同步服务器上的数据

--例子:
--测试环境,SQL Server2000,远程服务器名:xz,用户名为:sa,无密码,测试数据库:test
--服务器上的表(查询分析器连接到服务器上创建)
create table [user](id int primary key,number varchar(4),name varchar(10))
go
--以下在局域网(本机操作)
--本机的表,state说明:null 表示新增记录,1 表示修改过的记录,0 表示无变化的记录
if exists (select * from dbo.sysobjects where id = object_id(N'[user]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [user]
GO
create table [user](id int identity(1,1),number varchar(4),name varchar(10),state bit)
go
--创建触发器,维护state字段的值
create trigger t_state on [user]
after update
as
update [user] set state=1
from [user] a join inserted b on a.id=b.id
where a.state is not null
go

--为了方便同步处理,创建链接服务器到要同步的服务器
--这里的远程服务器名为:xz,用户名为:sa,无密码
if exists(select 1 from master..sysservers where srvname='srv_lnk')
exec sp_dropserver 'srv_lnk','droplogins'
go
exec sp_addlinkedserver  'srv_lnk','','SQLOLEDB','xz'
exec sp_addlinkedsrvlogin 'srv_lnk','false',null,'sa'
go

--创建同步处理的存储过程
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[p_synchro]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[p_synchro]
GO
create proc p_synchro
as
--set  XACT_ABORT on
--启动远程服务器的MSDTC服务
--exec master..xp_cmdshell 'isql /S"xz" /U"sa" /P"" /q"exec master..xp_cmdshell ''net start msdtc'',no_output"',no_output

--启动本机的MSDTC服务
--exec master..xp_cmdshell 'net start msdtc',no_output

--进行分布事务处理,如果表用标识列做主键,用下面的方法
--BEGIN DISTRIBUTED TRANSACTION
--同步删除的数据
delete from srv_lnk.test.dbo.[user]
  where id not in(select id from [user])

--同步新增的数据
insert into srv_lnk.test.dbo.[user]
select id,number,name from [user] where state is null

--同步修改的数据
update srv_lnk.test.dbo.[user] set
  number=b.number,name= b.name
from srv_lnk.test.dbo.[user] a
  join [user] b on a.id=b.id
where b.state=1

--同步后更新本机的标志
update [user] set state=0 where isnull(state,1)=1
--COMMIT TRAN
go

--创建作业,定时执行数据同步的存储过程
if exists(SELECT 1 from msdb..sysjobs where name='数据处理')
EXECUTE msdb.dbo.sp_delete_job @job_name='数据处理'
exec msdb..sp_add_job @job_name='数据处理'

--创建作业步骤
declare @sql varchar(800),@dbname varchar(250)
select @sql='exec p_synchro'   --数据处理的命令
,@dbname=db_name()   --执行数据处理的数据库名

exec msdb..sp_add_jobstep @job_name='数据处理',
@step_name = '数据同步',
@subsystem = 'TSQL',
@database_name=@dbname,
    @command = @sql,
@retry_attempts = 5,   --重试次数
@retry_interval = 5    --重试间隔

--创建调度
EXEC msdb..sp_add_jobschedule @job_name = '数据处理',
@name = '时间安排',
@freq_type = 4,     --每天
@freq_interval = 1,    --每天执行一次
@active_start_time = 00000  --0点执行
go


......


详细内容...

《PC WORLD》评出25家最值得关注创新网站 - 使用 Google 工具栏进行发送

导语:北京时间6月18日,国外媒体今天发表分析文章称,YouTube和MySpace大获成功之后,是否还会有类似的重量级网站出现呢?答案当然是肯定的,《PCWORLD》杂志近日就评出了当前最值得关注的25家创新网站和服务:

在《PCWORLD》评出的25家网站和服务中,有些可以帮助用户设计个性化网站聚合应用,有些可以帮助用户创建视频片段、打造维基和共享个人爱好。值得注意的是,这些网站还都处于发展初期。一般来说,用户生成内容网站对于大众内容非常依赖,而要获得大量内容并不是短期内能实现的目标,在寻找未来YouTube和MySpace的过程中,必须要考虑到这一点。下面是《PCWORLD》评出的25家网站和服务:

聚合、地图和其它类

1.Popfly:www.Popfly.com

介绍:Popfly是一个基于Web的可视化工具,利用了微软不久前Silverlight技术。Popfly可以帮助用户创建和共享网站、Mashup、素材、以及更加丰富的在线用户体验工具。

2.Yahoo Pipes:pipes.yahoo.com

介绍:Yahoo Pipes是一款可视化开发工具,可以帮助用户处理来自多个网站的数据种子,以便创建出新的应用。

3.BuzzDash:www.buzzdash.com

介绍:BuzzDash主要通过投票的方式回答用户提出的问题。

4.Wayfaring:www.wayfaring.com

介绍:Wayfaring可以帮助用户创建个性化地图。

5.CircleUp:www.circleup.com

介绍:CircleUp是一个在线问答服务网站,既支持联系人电子邮件,还支持即时信息工具。

组织、搜索和优化类:

6.Pageflakes:www.Pageflakes.com

介绍:Pageflakes可以帮助用户定制网站,以更方便地找到自己需要的新闻和信息。

7.Spock:www.Spock.com

介绍:Spock是一个搜索引擎,专门用于查找同"人"相关的信息。

8.Swivel:www.Swivel.com

介绍:Swivel是一个开放的数据库,任何人都可以上传自己整理好的某方面统计数据,从而形成直观的数据图表供大家分享

9.Clipmarks:www.Clipmarks.com

介绍:Clipmarks是一项在线剪报服务,可以帮助用户保存喜欢的网页内容。

10:OpenDNS:www.opendns.com

介绍:OpenDNS是一个提供免费DNS服务的网站,其口号是更安全、更快速、更智能。

房地产、书签和博客类

11.Trulia:www.Trulia.com

介绍:Trulia是一家房地产搜索网站,可以帮助用户了解在某一地区购买房地产需要投入多少资金。

12.PopURLs:popurls.com

介绍:PopURLs是一个网址聚合网站,聚集了Digg、Reddit、Del.icio.us、Furl、Slashdot、BoingBoing、NewsVine、Metafilter、Google Video和Youtube等网站的最新内容。

13.Goowy:www.goowy.com

介绍:Goowy是一个基于Flash的动态个人信息服务,可以帮助用户通过网络运行不同的应用和维基。

14.BlogBackupOnline:www.blogbackuponline.com

介绍:BlogBackupOnline是一个在线备份博客内容的网站。

15.Ma.gnolia:ma.gnolia.com

介绍:Ma.gnolia是一个社会书签网站。

创建和共享类

16.Yodio:www.Yodio.com

介绍:Yodio是一个可以帮助用户创建音频明信片的网站。

17.Meebo Rooms:wwwl.meebo.com

介绍:Meebo Rooms是一个多媒体聊天室。

18.Squidoo:www.Squidoo.com

介绍:Squidoo可以帮助用户创建能反映自己情绪的网页。

19.SplashCast:splashcastmedia.com

介绍:SplashCast可以帮助用户打造自己的流媒体频道。

20.Eyespot:www.Eyespot.com

介绍:Eyespot可以帮助用户创建视频片段,并与他人共享。

协同工作和游戏类

21.Approver.com:www.pprover.com

介绍:Approver.com可以帮助用户同朋友、同事共享文件和构思。

22:Pbwiki:pbwiki.com

介绍:Pbwiki是一个提供免费维基的网站。

23.MyPunchbowl:www.mypunchbowl.com

介绍:MyPunchbowl主要提供聚会管理参考,网站设计目的是为了向用户提供一种参与聚会的简单方式。通过搜索或者提示信息,用户能了解自己喜欢的聚会和它与自己距离,以便于了解聚会的内容。

24.Picnik:www.picnik.com

介绍:Picnik是一个提供基于Flash的在线图片处理服务的网站。

25.Quintura:www.quintura.com

介绍:Quintura是一个搜索引擎客户端,当用户搜索特定的关键字时,它会按照相关词汇和搜索结果自动匹配其它关键字来引导用户进行进一步的搜索,直至过滤出想要的结果。


......


详细内容...

31 个用来测试你网站各项性能的免费在线工具- 已使用 Google 工具栏发送

你是否肯定你的网站完全兼容各大浏览器?是否知道多少秒可以打开你的网站? 是否可以自信地说你的网站根本就没有打不开的时候? 是否……
虽然它看似不重要,但这些在一定程度上也对你的网站的访问量产生了影响 ( 其它一部分影响浏览量的原因及解决办法 )。这里列出了一份 31 个我最喜爱的免费在线测试工具,你可以通过这些工具来测试你的网站,并根据结果对你的网站进行修改。
网站代码验证 没人可以细致到保证自己的网站代码都是正确的,你可以通过以下测试来验证网站代码是否正确。

1 . WDG HTML Validator 一个很好的工具,能找出网站语法错误的地方,并标注出来,也可选择对网站上单独的每一页进行单页分析。( 强烈推荐

2 . W3C Markup Validation Service 对 HTML 和 XHTML 都能进行代码测试,自称是互联网络上第一个(也是使用者最多的)的 HTML 验证工具。

3 . W3C CSS Validation Service 用于验证 css 源代码,能够标注出不好的 css 代码设计。例如:"Same colors for color and background-color in two contexts"。

4 . RUWF XML Syntax Checker 用于查找 XML 文件的错误。

5 . W3C Feed Validation Service 用于查找 Atom 和 RSS feed 中的错误语法。( 这个我经常用到

6 . W3C Link Checker 用于搜寻查明你网站内的所有链接里是否有断链。( 强烈推荐

7 . Juicy Studio Link Analyser 测试网站内的链接的 URL 是否存在死链,与 W3C Link Checker 很类似。
网站的使用性
我们常常看到网站设计者把重点放在怎网站的吸引力上,而完全不考虑会不会影响来访者的使用,一个浏览难度很大的网页是注定要失败,要让你的来访者方便的得到他要的信息(从而成为重复访客),你的网站应当遵循 WCAG section 508 易用性规则。

8 . Watchfire WebXACT 所有严谨的设计师和开发者都必须使用的工具,它会生成一个非常详尽的报告书,包括:网站质量,易用性和隐私等。( 强烈推荐

9 . ATRC Web Accessibility Checker 测试网站的 WCAG 2.0 Level2 兼容性,它会生成一份报告,提出一系列建议,如:如何提升页头,链接,数据,图表和文字的访问速度。

10 . WAVE 3.0 Web Accessibility Tool 高度可定制的工具,它采用了图形化模型展示网站兼容性问题( WCAG 1.0 and section 508 )。( 强烈推荐

11 . TAW Web Accessibility Test 测试网页是否存在冲突( WCAG 1.0 兼容性 ),通过图形模式生成一份依据 wcag 优先模式为基础的网站修改建议。

12 . HiSoftware CynthiaSays portal 采用了非常严格的规则来测试网页( 根据 section 508 和 WCAG 1.0 规则 ),生成的报告也极为详细( 详细到很难看懂 )。

13 . HERA Accessibility testing with Style 使用一种极为复杂但容易理解方式指出网页的 wcag1.0 兼容性问题。

14 . Juicy Studio CSS Analyser 进行了色彩对比测试,以确保你的网站的色调会符合 WCAG 1.0 的要求。

15 . Juiciy Studio Readability Test 分析你网站上的文字是否有语法错误或拼写错误等问题,容易让人理解不( 根据 the Flesch Reading Ease 和 Flesch-Kincaid grade level algorithms 规则 )。( 适合英文网站使用 )
网站的速度
打开你的网站的速度快慢,是来访者会不会再次访问网站的关键因素,在一般情况下,一个网络不是很快的来访者是不愿意访问一个充满着图片、flash 动画、多媒体文件的网站。为了使你的网站覆盖人群的范围最大化,你必须优化你的网站,使它的打开速度尽可能的快。

16 . Web Page Analyzer from Website Optimization 一个很好的工具,它在分析完一个网页后,会为减少加载时间提出优化建议,着重优化物体的数目,图片和网站的总体大小。( 强烈推荐

17 . WebSitePulse Test Tools 有一系列的工具来确定网站的加载速度和主机信息。

18 . Internet Supervision Url Check 从世界各地不同的服务器来测试你的网站的加载时间,用于确定是不是各地的来访者都能顺利快速的打开你得网站。
浏览器模拟工具
这是一个普遍的问题,因为现在有着很多的操作系统和浏览器,你得网站必须得兼容它们,但这绝不是一件容易的事。通过下列工具,你可以了解你得网站在各种浏览器上的显示效果。

19 . Browsershots 能给出你的网站在不同浏览器下显示效果的截图,包括:Firefox 和 Internet Explorer ( Windows )、Firefox 和 Safari ( Mac OS X )、Iceweasal 和 Konqueror ( Linux ),但是结果要在 1 - 3 小时后才能出来。

20 . IE NetRenderer 实时生成你的网站在 Internet Explorer 5.5 、6.0 和 7.0 下的截图。

21 . MobiReady Report 分析使用手机访问网页的兼容性问题,会生成一份详细的报告,并提供了在两种不同类型的手机浏览器上你得网站可能显示的样子。
搜索引擎优化 (SEO)
一个网站,如果对搜索引擎有着比较好的友好度,一定会比较有竞争力。

22 . UrlTrends 会显示网站的访客是如何通过搜索引擎来到你的网站,还有各个流量是多少。这些数据是包括 Google, Yahoo, MSN, Alexa, AlltheWeb, AltaVista 和其他一些网站。( 强烈推荐

23 . iWEBTOOL Backlink Checker 一个很好的工具,它能找出有什么站点链接到你的站点,那些站点是什么类型的站点。

24 . iWEBTOOL Multi-Rank Checker 显示你网站的 Alexa 和 Google PageRank 数值。

25 . Microsoft adCenter Labs: Advertising and Keyword Research Tools 一个极好的工具,用于分析和预测你网站的来访者和市场。( 强烈推荐

26 . Domain Tools Whois lookup 一个 WHOIS 网络工具。

27 . SEO-Browser 可以让你看到在搜索引擎眼里一样的网站( 去掉所有的"美丽"配件 )。

28 . SEO Workers SEO Analysis Tool 非常有用的工具,分析了网站上的各种分类特征,包括 meta 标签、关键字密度及加载时间。( 强烈推荐

29 . Seekport Seekbot 可以分析网站的数据和内容,以得出搜索引擎会如何有效的解释分析的网站。

30 . SEO Chat SEO Tools 用以分析网站 Google adsense 盈利潜力,关键字密度,Meta tag 等等……

31 . Marketleap Search Engine Marketing Tools 用来分析网页,让你知道你的网站检索、设定的关键字好不好。


......


详细内容...

星期五, 六月 15, 2007

google日历可以支持sms提醒了

前两天看到新闻说,最近两天google将推出可以将一些搜索的结果免费发送到手机上,今天尝试了一下google日历的sms提醒,竟然可以了,而且还测试了第一个提醒,好是喜欢!不知道收费如何!
......


详细内容...

星期三, 六月 13, 2007

[蓝森林-自由软件] - 错误: error LNK2019: 无法解析的外部符号 _Netbios@4 - 使用 Google 工具栏进行发送


错误: error LNK2019: 无法解析的外部符号 _Netbios@4

我用vc.net 建立了一个w32项目,里面调用了一个函数Netbios()
生成时总是报错: error LNK2019: 无法解析的外部符号 _Netbios@4
我搞不清住这是怎么回事?
我的头文件包含了
#include <windows.h>;
#include <stdlib.h>;
#include <stdio.h>;
谁能解释一下??

错误: error LNK2019: 无法解析的外部符号 _Netbios@4

库没有连接上。

先从网上查一查Netbios()在哪个库里。
然后在vc的项目设置里面,project->;setting->;link 页 里把库加上就行了。

......


详细内容...

谷歌为用户买单 搜索结果免费发到手机 -使用 Google 工具栏进行发送

6月13日谷歌中国透露,该公司将推出,将本地搜索结果免费发到用户手机的服务。

  据李开复介绍,此项服务将在未来2、3天内推出,用户可选择将谷歌地图搜索出的结果,免费发向指定的手机。谷歌将向联通和移动支付发送这些短信的费用,而消费者不需支付任何费用。


......


详细内容...

星期二, 六月 12, 2007

常见端口详解及攻击策略 - 使用 Google 工具栏进行发送


 0 通常用于分析操作系统。这一方法能够工作是因为在一些系统中"0"是无效端口,当你试图使用一种通常的闭合端口
  连接它时将产生不同的结果。一种典型的扫描:使用IP地址为0.0.0.0,设置ACK位并在以太网层广播。
  1 tcpmux 这显示有人在寻找SGI Irix机器。Irix是实现tcpmux的主要提供者,缺省情况下tcpmux在这种系统中被打开。
  Iris机器在发布时含有几个缺省的无密码的帐户,如lp, guest, uucp, nuucp, demos, tutor, diag, EZsetup, OutOfBox,
  和4Dgifts。许多管理员安装后忘记删除这些帐户。因此Hacker们在Internet上搜索tcpmux并利用这些帐户。
  7 Echo 你能看到许多人们搜索Fraggle放大器时,发送到x.x.x.0和x.x.x.255的信息 。
  常见的一种DoS攻击是echo循环(echo-loop),攻击者伪造从一个机器发送到另一个机器的UDP数据包,而两个机器分别以
  它们最快的方式回应这些数据包。(参见Chargen)
  另一种东西是由DoubleClick在词端口建立的TCP连接。有一种产品叫做"Resonate Global Dispatch",它与DNS的这一端
  口连接以确定最近的路由。
  Harvest/squid cache将从3130端口发送UDP echo:"如果将cache的source_ping on选项打开,它将对原始主机的UDP echo
  端口回应一个HIT reply。"这将会产生许多这类数据包。
  11 sysstat 这是一种UNIX服务,它会列出机器上所有正在运行的进程以及是什么启动了这些进程。这为入侵者提供了许多信
  息而威胁机器的安全,如暴露已知某些弱点或帐户的程序。这与UNIX系统中"ps"命令的结果相似
  再说一遍:ICMP没有端口,ICMP port 11通常是ICMP type=11
  19 chargen 这是一种仅仅发送字符的服务。UDP版本将会在收到UDP包后回应含有垃圾字符的包。TCP连接时,会发送含有垃
  圾字符的数据流知道连接关闭。Hacker利用IP欺骗可以发动DoS攻击。伪造两个chargen服务器之间的UDP包。由于服务器企
  图回应两个服务器之间的无限的往返数据通讯一个chargen和echo将导致服务器过载。同样fraggle DoS攻击向目标地址的这
  个端口广播一个带有伪造受害者IP的数据包,受害者为了回应这些数据而过载。
  21 ftp 最常见的攻击者用于寻找打开"anonymous"的ftp服务器的方法。这些服务器带有可读写的目录。Hackers或Crackers
  利用这些服务器作为传送warez (私有程序) 和pr0n(故意拼错词而避免被搜索引擎分类)的节点。
  22 ssh PcAnywhere建立TCP和这一端口的连接可能是为了寻找ssh。这一服务有许多弱点。如果配置成特定的模式,许多使用
  RSAREF库的版本有不少漏洞。(建议在其它端口运行ssh)
  还应该注意的是ssh工具包带有一个称为make-ssh-known-hosts的程序。它会扫描整个域的ssh主机。你有时会被使用这一程
  序的人无意中扫描到。
  UDP(而不是TCP)与另一端的5632端口相连意味着存在搜索pcAnywhere的扫描。5632(十六进制的0x1600)位交换后是0x0016
  (使进制的22)。
  23 Telnet 入侵者在搜索远程登陆UNIX的服务。大多数情况下入侵者扫描这一端口是为了找到机器运行的操作系统。此外使
  用其它技术,入侵者会找到密码。
  25 smtp 攻击者(spammer)寻找SMTP服务器是为了传递他们的spam。入侵者的帐户总被关闭,他们需要拨号连接到高带宽
  的e-mail服务器上,将简单的信息传递到不同的地址。SMTP服务器(尤其是sendmail)是进入系统的最常用方法之一,因为
  它们必须完整的暴露于Internet且邮件的路由是复杂的(暴露+复杂=弱点)。
  53 DNS Hacker或crackers可能是试图进行区域传递(TCP),欺骗DNS(UDP)或隐藏其它通讯。因此防火墙常常过滤或记录
  53端口。
  需要注意的是你常会看到53端口做为UDP源端口。不稳定的防火墙通常允许这种通讯并假设这是对DNS查询的回复。Hacker常
  使用这种方法穿透防火墙。
  67和68 Bootp和DHCP UDP上的Bootp/DHCP:通过DSL和cable-modem的防火墙常会看见大量发送到广播地址255.255.255.255的
  数据。这些机器在向DHCP服务器请求一个地址分配。Hacker常进入它们分配一个地址把自己作为局部路由器而发起大量的
  "中间人"(man-in-middle)攻击。客户端向68端口(bootps)广播请求配置,服务器向67端口(bootpc)广播回应请求。
  这种回应使用广播是因为客户端还不知道可以发送的IP地址。
  69 TFTP(UDP) 许多服务器与bootp一起提供这项服务,便于从系统下载启动代码。但是它们常常错误配置而从系统
  提供任何文件,如密码文件。它们也可用于向系统写入文件。
  79 finger Hacker用于获得用户信息,查询操作系统,探测已知的缓冲区溢出错误,回应从自己机器到其它机器finger扫描。
  80=Http
  98 linuxconf 这个程序提供linux boxen的简单管理。通过整合的HTTP服务器在98端口提供基于Web界面的服务。它已发现有
  许多安全问题。一些版本setuid root,信任局域网,在/tmp下建立Internet可访问的文件,LANG环境变量有缓冲区溢出。此
  外因为它包含整合的服务器,许多典型的HTTP漏洞可能存在(缓冲区溢出,历遍目录等)
  109 POP2 并不象POP3那样有名,但许多服务器同时提供两种服务(向后兼容)。在同一个服务器上POP3的漏洞在POP2中同样
  存在。
  110 POP3 用于客户端访问服务器端的邮件服务。POP3服务有许多公认的弱点。关于用户名和密码交换缓冲区溢出的弱点至少
  有20个(这意味着Hacker可以在真正登陆前进入系统)。成功登陆后还有其它缓冲区溢出错误。
  111 sunrpc portmap rpcbind Sun RPC PortMapper/RPCBIND。访问portmapper是扫描系统查看允许哪些RPC服务的最早的一步。
  常见RPC服务有:rpc.mountd, NFS, rpc.statd, rpc.csmd, rpc.ttybd, amd等。入侵者发现了允许的RPC服务将转向提供服务
  的特定端口测试漏洞。
  记住一定要记录线路中的daemon, IDS, 或sniffer,你可以发现入侵者正使用什么程序访问以便发现到底发生了什么。
  113 Ident auth 这是一个许多机器上运行的协议,用于鉴别TCP连接的用户。使用标准的这种服务可以获得许多机器的信息
  (会被Hacker利用)。但是它可作为许多服务的记录器,尤其是FTP, POP, IMAP, SMTP和IRC等服务。通常如果有许多客户通
  过防火墙访问这些服务,你将会看到许多这个端口的连接请求。记住,如果你阻断这个端口客户端会感觉到在防火墙另一边与
  e-mail服务器的缓慢连接。许多防火墙支持在TCP连接的阻断过程中发回RST,着将回停止这一缓慢的连接。
  119 NNTP news 新闻组传输协议,承载USENET通讯。当你链接到诸如:news://comp.security.firewalls/. 的地址
  时通常使用这个端口。这个端口的连接企图通常是人们在寻找USENET服务器。多数ISP限制只有他们的客户才能访问他们的新闻
  组服务器。打开新闻组服务器将允许发/读任何人的帖子,访问被限制的新闻组服务器,匿名发帖或发送spam。
  121=BO jammerkillah
  135 oc-serv MS RPC end-point mapper Microsoft在这个端口运行DCE RPC end-point mapper为它的DCOM服务。这与UNIX 111
  端口的功能很相似。使用DCOM和/或RPC的服务利用机器上的end-point mapper注册它们的位置。远端客户连接到机器时,它们查
  询end-point mapper找到服务的位置。同样Hacker扫描机器的这个端口是为了找到诸如:这个机器上运行Exchange Server吗?
  是什么版本?
  这个端口除了被用来查询服务(如使用epdump)还可以被用于直接攻击。有一些DoS攻击直接针对这个端口。
  137 NetBIOS name service nbtstat (UDP) 这是防火墙管理员最常见的信息,请仔细阅读文章后面的NetBIOS一节
  138=NetBios-DGN
  139 NetBIOS
  File and Print Sharing 通过这个端口进入的连接试图获得NetBIOS/SMB服务。这个协议被用于Windows"文件和打印机共享"
  和SAMBA。在Internet上共享自己的硬盘是可能是最常见的问题。
  大量针对这一端口始于1999,后来逐渐变少。2000年又有回升。一些VBS(IE5 VisualBasic Scripting)开始将它们自己拷贝到
  这个端口,试图在这个端口繁殖。
  143 IMAP 和上面POP3的安全问题一样,许多IMAP服务器有缓冲区溢出漏洞运行登陆过程中进入。记住:一种Linux蠕虫(admw0rm)
  会通过这个端口繁殖,因此许多这个端口的扫描来自不知情的已被感染的用户。当RadHat在他们的Linux发布版本中默认允许IMAP
  后,这些漏洞变得流行起来。Morris蠕虫以后这还是第一次广泛传播的蠕虫。
  这一端口还被用于IMAP2,但并不流行。
  已有一些报道发现有些0到143端口的攻击源于脚本。
  161 SNMP(UDP) 入侵者常探测的端口。SNMP允许远程管理设备。所有配置和运行信息都储存在数据库中,通过SNMP客获得
  这些信息。许多管理员错误配置将它们暴露于Internet。Crackers将试图使用缺省的密码"public""private"访问系统。他
  们可能会试验所有可能的组合。
  SNMP包可能会被错误的指向你的网络。Windows机器常会因为错误配置将HP JetDirect remote management软件使用SNMP。
  HP OBJECT IDENTIFIER将收到SNMP包。新版的Win98使用SNMP解析域名,你会看见这种包在子网内广播(cable modem, DSL)
  查询sysName和其它信息。
  162 SNMP trap 可能是由于错误配置
  177 xdmcp 许多Hacker通过它访问X-Windows控制台, 它同时需要打开6000端口。
  194=Irc
  443=Https
  456=Hackers Paradise
  513 rwho 可能是从使用cable modem或DSL登陆到的子网中的UNIX机器发出的广播。这些人为Hacker进入他们的系统提供了很
  有趣的信息。
  553 CORBA
  IIOP (UDP) 如果你使用cable modem或DSL VLAN,你将会看到这个端口的广播。CORBA是一种面向对象的RPC(remote procedure
  call)系统。Hacker会利用这些信息进入系统。
  555=Stealth Spy(Phase)
  600 Pcserver backdoor 请查看1524端口
  一些玩script的孩子认为他们通过修改ingreslock和pcserver文件已经完全攻破了系统-- Alan J. Rosenthal.
  635 mountd Linux的mountd Bug。这是人们扫描的一个流行的Bug。大多数对这个端口的扫描是基于UDP的,但基于TCP的
  mountd有所增加(mountd同时运行于两个端口)。记住,mountd可运行于任何端口(到底在哪个端口,需要在端口111做
  portmap查询),只是Linux默认为635端口,就象NFS通常运行于2049端口。
  666=Attack FTP
  1001=Silencer
  1001=WebEx
  1010=Doly trojan v1.35
  1011=Doly Trojan
  1015=Doly trojan v1.5
  1024 许多人问这个端口是干什么的。它是动态端口的开始。许多程序并不在乎用哪个端口连接网络,它们请求操作系统为
  它们分配"下一个闲置端口"。基于这一点分配从端口1024开始。这意味着第一个向系统请求分配动态端口的程序将被分配
  端口1024。为了验证这一点,你可以重启机器,打开Telnet,再打开一个窗口运行"natstat -a",你将会看到Telnet被分
  配1024端口。请求的程序越多,动态端口也越多。操作系统分配的端口将逐渐变大。再来一遍,当你浏览Web页时用"netstat"
  查看,每个Web页需要一个新端口。
  1025 参见1024
  1026 参见1024
  1033=Netspy
  1042=Bla1.1
  1047=GateCrasher.b
  1047=GateCrasher.c
  1080 SOCKS
  这一协议以管道方式穿过防火墙,允许防火墙后面的许多人通过一个IP地址访问Internet。理论上它应该只允许内部的
  通信向外达到Internet。但是由于错误的配置,它会允许Hacker/Cracker的位于防火墙外部的攻击穿过防火墙。或者简
  单地回应位于Internet上的计算机,从而掩饰他们对你的直接攻击。WinGate是一种常见的Windows个人防火墙,常会发
  生上述的错误配置。在加入IRC聊天室时常会看到这种情况。
  1114 SQL
  系统本身很少扫描这个端口,但常常是sscan脚本的一部分。
  1243 Sub-7木马(TCP)
  参见Subseven部分。
  1245=Vodoo
  1269=Maverick's Matrix
  1492=FTP99CMP (BackOriffice.FTP)
  1524 ingreslock后门
  许多攻击脚本将安装一个后门Shell于这个端口(尤其是那些针对Sun系统中Sendmail和RPC服务漏洞的脚本,如statd,
  ttdbserver和cmsd)。如果你刚刚安装了你的防火墙就看到在这个端口上的连接企图,很可能是上述原因。你可以试试
  Telnet到你的机器上的这个端口,看看它是否会给你一个Shell。连接到600/pcserver也存在这个问题。
  1807=SpySender
  1981=ShockRave
  1999=Backdoor (YAI)
  1999=BackDoor.200
  1999=BackDoor.201
  1999=BackDoor.202
  1999=BackDoor.203
  1509=Streaming Server
  1600=Shiv
  2001=TrojanCow
  2023=Pass Ripper
  2049 NFS
  NFS程序常运行于这个端口。通常需要访问portmapper查询这个服务运行于哪个端口,但是大部分情况是安装后NFS运行于
  这个端口,Hacker/Cracker因而可以闭开portmapper直接测试这个端口。
  2140=DeepThroat.10
  2140=Invasor
  2140=The Invasor
  2283=Rat
  2565=Striker
  2583=Wincrash2
  2801=Phineas
  3128 squid
  这是Squid HTTP代理服务器的默认端口。攻击者扫描这个端口是为了搜寻一个代理服务器而匿名访问Internet。你也会看
  到搜索其它代理服务器的端口:8000/8001/8080/8888。扫描这一端口的另一原因是:用户正在进入聊天室。其它用户
  (或服务器本身)也会检验这个端口以确定用户的机器是否支持代理。请查看5.3节。
  3129=MastersParadise.92
  3150=Deep Throat 1.0
  3210=SchoolBus
  4000=OICQ Client
  4567=FileNail
  4950=IcqTrojan
  5000=Blazer 5
  5190=ICQ Query
  5321=Firehotcker
  5400=BackConstruction1.2
  5400=BladeRunner
  5550=Xtcp
  5569=RoboHack
  5632 pcAnywere
  你会看到很多这个端口的扫描,这依赖于你所在的位置。当用户打开pcAnywere时,它会自动扫描局域网C类网以寻找可能
  得代理(译者:指agent而不是proxy)。Hacker/cracker也会寻找开放这种服务的机器,所以应该查看这种扫描的源地址。
  一些搜寻pcAnywere的扫描常包含端口22的UDP数据包。参见拨号扫描。
  5714=Wincrash3
  5742=Wincrash
  6400=The Thing
  6669=Vampire
  6670=Deep Throat
  6711=SubSeven
  6713=SubSeven
  6767=NT Remote Control
  6771=Deep Throat 3
  6776 Sub-7 artifact
  这个端口是从Sub-7主端口分离出来的用于传送数据的端口。例如当控制者通过电话线控制另一台机器,而被控机器挂断
  时你将会看到这种情况。因此当另一人以此IP拨入时,他们将会看到持续的,在这个端口的连接企图。(译者:即看到
  防火墙报告这一端口的连接企图时,并不表示你已被Sub-7控制。)
  6883=DeltaSource
  6939=Indoctrination
  6969=Gatecrasher.a
  6970 RealAudio
  RealAudio客户将从服务器的6970-7170的UDP端口接收音频数据流。这是由TCP7070端口外向控制连接设置的。
  7306=NetMonitor (NetSpy)
  7307=ProcSpy
  7308=X Spy
  7626=木马冰河
  7789=ICQKiller
  8000=OICQ Server
  9400=InCommand
  9401=InCommand
  9402=InCommand
  9872=Portal of Doom
  9875=Portal of Doom
  9989=InIkiller
  10167=Portal Of Doom
  10607=Coma
  11000=Senna Spy Trojans
  11223=ProgenicTrojan
  12076=Gjamer
  12076=MSH.104b
  12223=Hack?9 KeyLogger
  12345=NetBus 1.x
  12346=NetBus 1.x
  12631=WhackJob.NB1.7
  13223 PowWow
  PowWow 是Tribal Voice的聊天程序。它允许用户在此端口打开私人聊天的连接。这一程序对于建立连接非常具有"进攻性"。
  它会"驻扎"在这一TCP端口等待回应。这造成类似心跳间隔的连接企图。如果你是一个拨号用户,从另一个聊天者手中
  "继承"了IP地址这种情况就会发生:好象很多不同的人在测试这一端口。这一协议使用"OPNG"作为其连接企图的前四
  个字节。
  16969=Priotrity
  17027 Conducent
  这是一个外向连接。这是由于公司内部有人安装了带有Conducent "adbot" 的共享软件。Conducent "adbot"是为共享软件
  显示广告服务的。使用这种服务的一种流行的软件是Pkware。有人试验:阻断这一外向连接不会有任何问题,但是封掉IP
  地址本身将会导致adbots持续在每秒内试图连接多次而导致连接过载: 机器会不断试图解析DNS名-ads.conducent.com,
  即IP地址216.33.210.40 ;216.33.199.77 216.33.199.80 ;216.33.199.81;216.33.210.41。(译者:不知NetAnts使
  用的Radiate是否也有这种现象)
  17300=Kuang2
  20000=Millenium II (GrilFriend)
  20001=Millenium II (GrilFriend)
  20034=NetBus Pro
  20331=Bla
  21554=GirlFriend
  21554=Schwindler 1.82
  22222=Prosiak
  23456=Evil FTP
  23456=UglyFtp
  23456=WhackJob
  27374 Sub-7木马(TCP)
  参见Subseven部分。
  29891=The Unexplained
  30029=AOLTrojan
  30100 NetSphere木马(TCP)
  通常这一端口的扫描是为了寻找中了NetSphere木马。
  30303=Socket23
  30999=Kuang
  31337 Back Orifice "elite"
  Hacker中31337读做"elite"/ei'li:t/(译者:法语,译为中坚力量,精华。即3=E, 1=L, 7=T)。因此许多后门程序运
  行于这一端口。其中最有名的是Back Orifice。曾经一段时间内这是Internet上最常见的扫描。现在它的流行越来越少,
  其它的木马程序越来越流行。
  31339=NetSpy
  31666=BO Whackmole
  31787=Hack'a'tack
  31789 Hack-a-tack
  这一端口的UDP通讯通常是由于"Hack-a-tack"远程访问木马(RAT, Remote Access Trojan)。这种木马包含内置的31790
  端口扫描器,因此任何31789端口到317890端口的连接意味着已经有这种入侵。(31789端口是控制连接,317890端口是文
  件传输连接)
  32770~32900 RPC服务
  Sun Solaris的RPC服务在这一范围内。详细的说:早期版本的Solaris(2.5.1之前)将portmapper置于这一范围内,即使
  低端口被防火墙封闭仍然允许Hacker/cracker访问这一端口。扫描这一范围内的端口不是为了寻找portmapper,就是为了
  寻找可被攻击的已知的RPC服务。
  33333=Prosiak
  33434~33600 traceroute
  如果你看到这一端口范围内的UDP数据包(且只在此范围之内)则可能是由于traceroute。参见traceroute部分。
  33911=Trojan Spirit 2001 a
  34324=TN
  34324=Tiny Telnet Server
  40412=TheSpy
  40421=MastersParadise.96
  40423=Master Paradise.97
  41508 Inoculan
  早期版本的Inoculan会在子网内产生大量的UDP通讯用于识别彼此
  47878=BirdSpy2
  50766=Fore
  50766=Schwindler
  53001=Remote Shutdown
  54320=Back Orifice 2000
  54321=SchoolBus 1.6
  61466=Telecommando
  65000=Devil
  0 通常用于分析操作系统。这一方法能够工作是因为在一些系统中"0"是无效端口,当你试图使用一种通常的闭合端口
  连接它时将产生不同的结果。一种典型的扫描:使用IP地址为0.0.0.0,设置ACK位并在以太网层广播。
  1 tcpmux 这显示有人在寻找SGI Irix机器。Irix是实现tcpmux的主要提供者,缺省情况下tcpmux在这种系统中被打开。
  Iris机器在发布时含有几个缺省的无密码的帐户,如lp, guest, uucp, nuucp, demos, tutor, diag, EZsetup, OutOfBox,
  和4Dgifts。许多管理员安装后忘记删除这些帐户。因此Hacker们在Internet上搜索tcpmux并利用这些帐户。
  7 Echo 你能看到许多人们搜索Fraggle放大器时,发送到x.x.x.0和x.x.x.255的信息 。
  常见的一种DoS攻击是echo循环(echo-loop),攻击者伪造从一个机器发送到另一个机器的UDP数据包,而两个机器分别以
  它们最快的方式回应这些数据包。(参见Chargen)
  另一种东西是由DoubleClick在词端口建立的TCP连接。有一种产品叫做"Resonate Global Dispatch",它与DNS的这一端
  口连接以确定最近的路由。
  Harvest/squid cache将从3130端口发送UDP echo:"如果将cache的source_ping on选项打开,它将对原始主机的UDP echo
  端口回应一个HIT reply。"这将会产生许多这类数据包。
  11 sysstat 这是一种UNIX服务,它会列出机器上所有正在运行的进程以及是什么启动了这些进程。这为入侵者提供了许多信
  息而威胁机器的安全,如暴露已知某些弱点或帐户的程序。这与UNIX系统中"ps"命令的结果相似
  再说一遍:ICMP没有端口,ICMP port 11通常是ICMP type=11
  19 chargen 这是一种仅仅发送字符的服务。UDP版本将会在收到UDP包后回应含有垃圾字符的包。TCP连接时,会发送含有垃
  圾字符的数据流知道连接关闭。Hacker利用IP欺骗可以发动DoS攻击。伪造两个chargen服务器之间的UDP包。由于服务器企
  图回应两个服务器之间的无限的往返数据通讯一个chargen和echo将导致服务器过载。同样fraggle DoS攻击向目标地址的这
  个端口广播一个带有伪造受害者IP的数据包,受害者为了回应这些数据而过载。
  21 ftp 最常见的攻击者用于寻找打开"anonymous"的ftp服务器的方法。这些服务器带有可读写的目录。Hackers或Crackers
  利用这些服务器作为传送warez (私有程序) 和pr0n(故意拼错词而避免被搜索引擎分类)的节点。
  22 ssh PcAnywhere建立TCP和这一端口的连接可能是为了寻找ssh。这一服务有许多弱点。如果配置成特定的模式,许多使用
  RSAREF库的版本有不少漏洞。(建议在其它端口运行ssh)
  还应该注意的是ssh工具包带有一个称为make-ssh-known-hosts的程序。它会扫描整个域的ssh主机。你有时会被使用这一程
  序的人无意中扫描到。
  UDP(而不是TCP)与另一端的5632端口相连意味着存在搜索pcAnywhere的扫描。5632(十六进制的0x1600)位交换后是0x0016
  (使进制的22)。
  23 Telnet 入侵者在搜索远程登陆UNIX的服务。大多数情况下入侵者扫描这一端口是为了找到机器运行的操作系统。此外使
  用其它技术,入侵者会找到密码。
  25 smtp 攻击者(spammer)寻找SMTP服务器是为了传递他们的spam。入侵者的帐户总被关闭,他们需要拨号连接到高带宽
  的e-mail服务器上,将简单的信息传递到不同的地址。SMTP服务器(尤其是sendmail)是进入系统的最常用方法之一,因为
  它们必须完整的暴露于Internet且邮件的路由是复杂的(暴露+复杂=弱点)。
  53 DNS Hacker或crackers可能是试图进行区域传递(TCP),欺骗DNS(UDP)或隐藏其它通讯。因此防火墙常常过滤或记录
  53端口。
  需要注意的是你常会看到53端口做为UDP源端口。不稳定的防火墙通常允许这种通讯并假设这是对DNS查询的回复。Hacker常
  使用这种方法穿透防火墙。
  67和68 Bootp和DHCP UDP上的Bootp/DHCP:通过DSL和cable-modem的防火墙常会看见大量发送到广播地址255.255.255.255的
  数据。这些机器在向DHCP服务器请求一个地址分配。Hacker常进入它们分配一个地址把自己作为局部路由器而发起大量的
  "中间人"(man-in-middle)攻击。客户端向68端口(bootps)广播请求配置,服务器向67端口(bootpc)广播回应请求。
  这种回应使用广播是因为客户端还不知道可以发送的IP地址。
  69 TFTP(UDP) 许多服务器与bootp一起提供这项服务,便于从系统下载启动代码。但是它们常常错误配置而从系统
  提供任何文件,如密码文件。它们也可用于向系统写入文件。
  79 finger Hacker用于获得用户信息,查询操作系统,探测已知的缓冲区溢出错误,回应从自己机器到其它机器finger扫描。
  80=Http
  98 linuxconf 这个程序提供linux boxen的简单管理。通过整合的HTTP服务器在98端口提供基于Web界面的服务。它已发现有
  许多安全问题。一些版本setuid root,信任局域网,在/tmp下建立Internet可访问的文件,LANG环境变量有缓冲区溢出。此
  外因为它包含整合的服务器,许多典型的HTTP漏洞可能存在(缓冲区溢出,历遍目录等)
  109 POP2 并不象POP3那样有名,但许多服务器同时提供两种服务(向后兼容)。在同一个服务器上POP3的漏洞在POP2中同样
  存在。
  110 POP3 用于客户端访问服务器端的邮件服务。POP3服务有许多公认的弱点。关于用户名和密码交换缓冲区溢出的弱点至少
  有20个(这意味着Hacker可以在真正登陆前进入系统)。成功登陆后还有其它缓冲区溢出错误。
  111 sunrpc portmap rpcbind Sun RPC PortMapper/RPCBIND。访问portmapper是扫描系统查看允许哪些RPC服务的最早的一步。
  常见RPC服务有:rpc.mountd, NFS, rpc.statd, rpc.csmd, rpc.ttybd, amd等。入侵者发现了允许的RPC服务将转向提供服务
  的特定端口测试漏洞。
  记住一定要记录线路中的daemon, IDS, 或sniffer,你可以发现入侵者正使用什么程序访问以便发现到底发生了什么。
  113 Ident auth 这是一个许多机器上运行的协议,用于鉴别TCP连接的用户。使用标准的这种服务可以获得许多机器的信息
  (会被Hacker利用)。但是它可作为许多服务的记录器,尤其是FTP, POP, IMAP, SMTP和IRC等服务。通常如果有许多客户通
  过防火墙访问这些服务,你将会看到许多这个端口的连接请求。记住,如果你阻断这个端口客户端会感觉到在防火墙另一边与
  e-mail服务器的缓慢连接。许多防火墙支持在TCP连接的阻断过程中发回RST,着将回停止这一缓慢的连接。
  119 NNTP news 新闻组传输协议,承载USENET通讯。当你链接到诸如:news://comp.security.firewalls/. 的地址
  时通常使用这个端口。这个端口的连接企图通常是人们在寻找USENET服务器。多数ISP限制只有他们的客户才能访问他们的新闻
  组服务器。打开新闻组服务器将允许发/读任何人的帖子,访问被限制的新闻组服务器,匿名发帖或发送spam。
  121=BO jammerkillah
  135 oc-serv MS RPC end-point mapper Microsoft在这个端口运行DCE RPC end-point mapper为它的DCOM服务。这与UNIX 111
  端口的功能很相似。使用DCOM和/或RPC的服务利用机器上的end-point mapper注册它们的位置。远端客户连接到机器时,它们查
  询end-point mapper找到服务的位置。同样Hacker扫描机器的这个端口是为了找到诸如:这个机器上运行Exchange Server吗?
  是什么版本?
  这个端口除了被用来查询服务(如使用epdump)还可以被用于直接攻击。有一些DoS攻击直接针对这个端口。
  137 NetBIOS name service nbtstat (UDP) 这是防火墙管理员最常见的信息,请仔细阅读文章后面的NetBIOS一节
  138=NetBios-DGN
  139 NetBIOS
  File and Print Sharing 通过这个端口进入的连接试图获得NetBIOS/SMB服务。这个协议被用于Windows"文件和打印机共享"
  和SAMBA。在Internet上共享自己的硬盘是可能是最常见的问题。
  大量针对这一端口始于1999,后来逐渐变少。2000年又有回升。一些VBS(IE5 VisualBasic Scripting)开始将它们自己拷贝到
  这个端口,试图在这个端口繁殖。
  143 IMAP 和上面POP3的安全问题一样,许多IMAP服务器有缓冲区溢出漏洞运行登陆过程中进入。记住:一种Linux蠕虫(admw0rm)
  会通过这个端口繁殖,因此许多这个端口的扫描来自不知情的已被感染的用户。当RadHat在他们的Linux发布版本中默认允许IMAP
  后,这些漏洞变得流行起来。Morris蠕虫以后这还是第一次广泛传播的蠕虫。
  这一端口还被用于IMAP2,但并不流行。
  已有一些报道发现有些0到143端口的攻击源于脚本。
  161 SNMP(UDP) 入侵者常探测的端口。SNMP允许远程管理设备。所有配置和运行信息都储存在数据库中,通过SNMP客获得
  这些信息。许多管理员错误配置将它们暴露于Internet。Crackers将试图使用缺省的密码"public""private"访问系统。他
  们可能会试验所有可能的组合。
  SNMP包可能会被错误的指向你的网络。Windows机器常会因为错误配置将HP JetDirect remote management软件使用SNMP。
  HP OBJECT IDENTIFIER将收到SNMP包。新版的Win98使用SNMP解析域名,你会看见这种包在子网内广播(cable modem, DSL)
  查询sysName和其它信息。
  162 SNMP trap 可能是由于错误配置
  177 xdmcp 许多Hacker通过它访问X-Windows控制台, 它同时需要打开6000端口。
  194=Irc
  443=Https
  456=Hackers Paradise
  513 rwho 可能是从使用cable modem或DSL登陆到的子网中的UNIX机器发出的广播。这些人为Hacker进入他们的系统提供了很
  有趣的信息。
  553 CORBA
  IIOP (UDP) 如果你使用cable modem或DSL VLAN,你将会看到这个端口的广播。CORBA是一种面向对象的RPC(remote procedure
  call)系统。Hacker会利用这些信息进入系统。
  555=Stealth Spy(Phase)
  600 Pcserver backdoor 请查看1524端口
  一些玩script的孩子认为他们通过修改ingreslock和pcserver文件已经完全攻破了系统-- Alan J. Rosenthal.
  635 mountd Linux的mountd Bug。这是人们扫描的一个流行的Bug。大多数对这个端口的扫描是基于UDP的,但基于TCP的
  mountd有所增加(mountd同时运行于两个端口)。记住,mountd可运行于任何端口(到底在哪个端口,需要在端口111做
  portmap查询),只是Linux默认为635端口,就象NFS通常运行于2049端口。
  666=Attack FTP
  1001=Silencer
  1001=WebEx
  1010=Doly trojan v1.35
  1011=Doly Trojan
  1015=Doly trojan v1.5
  1024 许多人问这个端口是干什么的。它是动态端口的开始。许多程序并不在乎用哪个端口连接网络,它们请求操作系统为
  它们分配"下一个闲置端口"。基于这一点分配从端口1024开始。这意味着第一个向系统请求分配动态端口的程序将被分配
  端口1024。为了验证这一点,你可以重启机器,打开Telnet,再打开一个窗口运行"natstat -a",你将会看到Telnet被分
  配1024端口。请求的程序越多,动态端口也越多。操作系统分配的端口将逐渐变大。再来一遍,当你浏览Web页时用"netstat"
  查看,每个Web页需要一个新端口。
  1025 参见1024
  1026 参见1024
  1033=Netspy
  1042=Bla1.1
  1047=GateCrasher.b
  1047=GateCrasher.c
  1080 SOCKS
  这一协议以管道方式穿过防火墙,允许防火墙后面的许多人通过一个IP地址访问Internet。理论上它应该只允许内部的
  通信向外达到Internet。但是由于错误的配置,它会允许Hacker/Cracker的位于防火墙外部的攻击穿过防火墙。或者简
  单地回应位于Internet上的计算机,从而掩饰他们对你的直接攻击。WinGate是一种常见的Windows个人防火墙,常会发
  生上述的错误配置。在加入IRC聊天室时常会看到这种情况。
  1114 SQL
  系统本身很少扫描这个端口,但常常是sscan脚本的一部分。
  1243 Sub-7木马(TCP)
  参见Subseven部分。
  1245=Vodoo
  1269=Maverick's Matrix
  1492=FTP99CMP (BackOriffice.FTP)
  1524 ingreslock后门
  许多攻击脚本将安装一个后门Shell于这个端口(尤其是那些针对Sun系统中Sendmail和RPC服务漏洞的脚本,如statd,
  ttdbserver和cmsd)。如果你刚刚安装了你的防火墙就看到在这个端口上的连接企图,很可能是上述原因。你可以试试
  Telnet到你的机器上的这个端口,看看它是否会给你一个Shell。连接到600/pcserver也存在这个问题。
  1807=SpySender
  1981=ShockRave
  1999=Backdoor (YAI)
  1999=BackDoor.200
  1999=BackDoor.201
  1999=BackDoor.202
  1999=BackDoor.203
  1509=Streaming Server
  1600=Shiv
  2001=TrojanCow
  2023=Pass Ripper
  2049 NFS
  NFS程序常运行于这个端口。通常需要访问portmapper查询这个服务运行于哪个端口,但是大部分情况是安装后NFS运行于
  这个端口,Hacker/Cracker因而可以闭开portmapper直接测试这个端口。
  2140=DeepThroat.10
  2140=Invasor
  2140=The Invasor
  2283=Rat
  2565=Striker
  2583=Wincrash2
  2801=Phineas
  3128 squid
  这是Squid HTTP代理服务器的默认端口。攻击者扫描这个端口是为了搜寻一个代理服务器而匿名访问Internet。你也会看
  到搜索其它代理服务器的端口:8000/8001/8080/8888。扫描这一端口的另一原因是:用户正在进入聊天室。其它用户
  (或服务器本身)也会检验这个端口以确定用户的机器是否支持代理。请查看5.3节。
  3129=MastersParadise.92
  3150=Deep Throat 1.0
  3210=SchoolBus
  4000=OICQ Client
  4567=FileNail
  4950=IcqTrojan
  5000=Blazer 5
  5190=ICQ Query
  5321=Firehotcker
  5400=BackConstruction1.2
  5400=BladeRunner
  5550=Xtcp
  5569=RoboHack
  5632 pcAnywere
  你会看到很多这个端口的扫描,这依赖于你所在的位置。当用户打开pcAnywere时,它会自动扫描局域网C类网以寻找可能
  得代理(译者:指agent而不是proxy)。Hacker/cracker也会寻找开放这种服务的机器,所以应该查看这种扫描的源地址。
  一些搜寻pcAnywere的扫描常包含端口22的UDP数据包。参见拨号扫描。
  5714=Wincrash3
  5742=Wincrash
  6400=The Thing
  6669=Vampire
  6670=Deep Throat
  6711=SubSeven
  6713=SubSeven
  6767=NT Remote Control
  6771=Deep Throat 3
  6776 Sub-7 artifact
  这个端口是从Sub-7主端口分离出来的用于传送数据的端口。例如当控制者通过电话线控制另一台机器,而被控机器挂断
  时你将会看到这种情况。因此当另一人以此IP拨入时,他们将会看到持续的,在这个端口的连接企图。(译者:即看到
  防火墙报告这一端口的连接企图时,并不表示你已被Sub-7控制。)
  6883=DeltaSource
  6939=Indoctrination
  6969=Gatecrasher.a
  6970 RealAudio
  RealAudio客户将从服务器的6970-7170的UDP端口接收音频数据流。这是由TCP7070端口外向控制连接设置的。
  7306=NetMonitor (NetSpy)
  7307=ProcSpy
  7308=X Spy
  7626=木马冰河
  7789=ICQKiller
  8000=OICQ Server
  9400=InCommand
  9401=InCommand
  9402=InCommand
  9872=Portal of Doom
  9875=Portal of Doom
  9989=InIkiller
  10167=Portal Of Doom
  10607=Coma
  11000=Senna Spy Trojans
  11223=ProgenicTrojan
  12076=Gjamer
  12076=MSH.104b
  12223=Hack?9 KeyLogger
  12345=NetBus 1.x
  12346=NetBus 1.x
  12631=WhackJob.NB1.7
  13223 PowWow
  PowWow 是Tribal Voice的聊天程序。它允许用户在此端口打开私人聊天的连接。这一程序对于建立连接非常具有"进攻性"。
  它会"驻扎"在这一TCP端口等待回应。这造成类似心跳间隔的连接企图。如果你是一个拨号用户,从另一个聊天者手中
  "继承"了IP地址这种情况就会发生:好象很多不同的人在测试这一端口。这一协议使用"OPNG"作为其连接企图的前四
  个字节。
  16969=Priotrity
  17027 Conducent
  这是一个外向连接。这是由于公司内部有人安装了带有Conducent "adbot" 的共享软件。Conducent "adbot"是为共享软件
  显示广告服务的。使用这种服务的一种流行的软件是Pkware。有人试验:阻断这一外向连接不会有任何问题,但是封掉IP
  地址本身将会导致adbots持续在每秒内试图连接多次而导致连接过载: 机器会不断试图解析DNS名-ads.conducent.com,
  即IP地址216.33.210.40 ;216.33.199.77 216.33.199.80 ;216.33.199.81;216.33.210.41。(译者:不知NetAnts使
  用的Radiate是否也有这种现象)
  17300=Kuang2
  20000=Millenium II (GrilFriend)
  20001=Millenium II (GrilFriend)
  20034=NetBus Pro
  20331=Bla
  21554=GirlFriend
  21554=Schwindler 1.82
  22222=Prosiak
  23456=Evil FTP
  23456=UglyFtp
  23456=WhackJob
  27374 Sub-7木马(TCP)
  参见Subseven部分。
  29891=The Unexplained
  30029=AOLTrojan
  30100 NetSphere木马(TCP)
  通常这一端口的扫描是为了寻找中了NetSphere木马。
  30303=Socket23
  30999=Kuang
  31337 Back Orifice "elite"
  Hacker中31337读做"elite"/ei'li:t/(译者:法语,译为中坚力量,精华。即3=E, 1=L, 7=T)。因此许多后门程序运
  行于这一端口。其中最有名的是Back Orifice。曾经一段时间内这是Internet上最常见的扫描。现在它的流行越来越少,
  其它的木马程序越来越流行。
  31339=NetSpy
  31666=BO Whackmole
  31787=Hack'a'tack
  31789 Hack-a-tack
  这一端口的UDP通讯通常是由于"Hack-a-tack"远程访问木马(RAT, Remote Access Trojan)。这种木马包含内置的31790
  端口扫描器,因此任何31789端口到317890端口的连接意味着已经有这种入侵。(31789端口是控制连接,317890端口是文
  件传输连接)
  32770~32900 RPC服务
  Sun Solaris的RPC服务在这一范围内。详细的说:早期版本的Solaris(2.5.1之前)将portmapper置于这一范围内,即使
  低端口被防火墙封闭仍然允许Hacker/cracker访问这一端口。扫描这一范围内的端口不是为了寻找portmapper,就是为了
  寻找可被攻击的已知的RPC服务。
  33333=Prosiak
  33434~33600 traceroute
  如果你看到这一端口范围内的UDP数据包(且只在此范围之内)则可能是由于traceroute。参见traceroute部分。
  33911=Trojan Spirit 2001 a
  34324=TN
  34324=Tiny Telnet Server
  40412=TheSpy
  40421=MastersParadise.96
  40423=Master Paradise.97
  41508 Inoculan
  早期版本的Inoculan会在子网内产生大量的UDP通讯用于识别彼此
  47878=BirdSpy2
  50766=Fore
  50766=Schwindler
  53001=Remote Shutdown
  54320=Back Orifice 2000
  54321=SchoolBus 1.6
  61466=Telecommando
  65000=Devil
......


详细内容...

在windows下配置GTK开发环境 - 使用 Google 工具栏进行发送

在windows下配置GTK开发环境

引用参考:
http://www.cs.ccu.edu.tw/~chm91u/site/gtk_for_win32.php
  在VC++6.0,C++BuilderX,Dev-C++,MinGWstudio下同步配置gtk开发环境,MinGWstudio(一下简称MGS)先出来了,现将配置步骤罗列如下:
  1.设置系统变量home,任意目录(注:仅为建议)仅为建议)
  2.下载所需环境: http://www.pcpm.ucl.ac.be/~gustin/win32_ports/ 下哪个几个,以什么为准呢?我是全部下载的 有点笨 确实没有办法,不过有几个包必须要下:gettext,glib,pkgconfig,gtk+,pango,atk.
  3.解压缩到某个文件夹 假定d:\gnu 最终形成诸如:bin,dll,etc,include,manshare等若干文件夹 我添加了个package包,放置那些下载的但是还没有使用的包
  4.配置MDS:
  找到[RecentProject]行, 在它的上一行添加
  Directories_Include_1=D:\gnu\include
  Directories_Include_2=D:\MinGWStudio\MinGW\include
  Directories_Include_3=D:\gnu\include\gtk-2.0
  Directories_Include_4=D:\gnu\include\glib- 2.0
  Directories_Include_5=D:\gnu\lib\glib-2.0\include
  Directories_Include_6=D:\gnu\lib\gtk-2.0\include
  Directories_Include_7=D:\gnu\include\pango-1.0
  Directories_Include_8=D:\gnu\include\atk-1.0
  Directories_Lib_1=D:\gnu\lib
  Directories_Lib_2=D:\gnu\dll
  Directories_Lib_3=D:\gnu\lib\pkgconfig
  Directories_Lib_4=D:\gnu\lib\pango\1.4.0\modules
  这里假定您的MSD没有进行过配置.其实这里是设置include directiories的地方,也可以从Edit/Options/Directions中改变.
  5.测试:
  新建工程hellogtk,创建C++文件mian.cpp
  #include <gtk/gtk.h>
  #include <stdio.h>
  int main(int argc, char *argv[])
  {
  GtkWidget *win, *label;
  gtk_set_locale();
  gtk_init(&argc, &argv);
  win = gtk_window_new(GTK_WINDOW_TOPLEVEL);
  gtk_widget_set_usize(GTK_WIDGET(win), 200, 100);
  gtk_window_set_title(GTK_WINDOW(win), "Test");
  gtk_signal_connect(GTK_OBJECT(win), "destroy", GTK_SIGNAL_FUNC(gtk_exit), NULL);
  label=gtk_label_new("Hello, GTK+\n");
  gtk_container_add(GTK_CONTAINER(win), GTK_WIDGET(label));
  gtk_widget_show_all(win);
  gtk_main();
  return 0;
  }
  如果发现有错误提示,一定是您的环境设置不正确
......


详细内容...

Visual C++ 2005配置安装

MS即将发布的Visual Studio 2005在04年6月发布了一个stable的beta版本供大家免费测试,官方下载地址如下:
http://lab.msdn.microsoft.com/vs2005/
下载前需填写一个online form,你也可以从以下网址中找到直接下载链接,但我没有验证过是否这是一个较早的版本:
http://blog.joycode.com/uestc95/archive/2004/07/01/26234.aspx
这里还有一个2004.10的版本的下载链接(Express Team发布):
http://blogs.msdn.com/express/archive/2004/10/21/246091.aspx
或者你还可以从下面的链接中找到更新的beta 2(2005.2)的下载链接,但该版本好像必须在线安装:
http://lab.msdn.microsoft.com/vs2005/downloads/default.aspx
目前尚未在MS的官方消息中找到该beta版本的expiration的说明,故应该可以无限期使用,跟Visual Studio Toolkit
2003一样。不过跟2003不同的是,2003只是一个编译器,而此次发布的2005
express则是一个比较完整的IDE。说它比较完整,是因为它没有提供MFC/ATL等支持,并且还没有提供资源编辑器。

介绍完毕,下面是安装步骤:
1、安装Visual C++ 2005 express前需安装.net framework 2.0 beta:
http://download.microsoft.com/download/2/d/9/2d96a8eb-a612-46ad-b4ed-6497a8e1f245/dotnetfx.exe
2、安装Visual C++ 2005 express,完成安装后你可以休息一会儿,打开Visual C++ 2005欣赏一下;然后,还有很多事情要做...
3、安装Platform SDK:
http://www.microsoft.com/msdownload/platformsdk/sdkupdate/
强烈建议将PSDK安装包下载到本地后进行安装,下载完毕后拔掉网线,然后关闭病毒防火墙进行安装,这样速度应该会快很多,否则,安装过程可能需要好1个小时甚至更多。
安装完毕后,你需要修改VC++2005的环境配置:
Tools->Options->Projects and Solutions->VC++ Directories
Executable files - C:\Program Files\Microsoft SDK\Bin
Include files - C:\Program Files\Microsoft SDK\include
Library files - C:\Program Files\Microsoft SDK\lib
4、此时,你应该可以编译一些最简单的Hello world程序了,但只要你使用任何Win32
API,你都可能会遇到一大堆的链接错误,我曾经为这个问题苦恼了好几天,在好几个论坛上发布了好些帖子也没有人回答,终于,有一天,我在下面的链接中找到了答案
http://lab.msdn.microsoft.com/express/visualc/usingpsdk/default.aspx
你只需修改一下Visual C++安装目录下的文件corewin_express.vsprops(在D:\Program
Files\Microsoft Visual Studio
8\VC\VCProjectDefaults下,假定你的VC2005装在D:\Program Files下),这是一个XML文件,将其中的
AdditionalDependencies="kernel32.lib"
改成
AdditionalDependencies="kernel32.lib user32.lib gdi32.lib winspool.lib
comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib"
即可,注意,不要删掉了节点AdditionalDependencies后的 />
OK,免费的VC2005准备就绪了!Let''''s go!
......


详细内容...

C# 开发和使用中的23个技巧 , C#,开发,使用,23,技巧, , - CSDN 新闻 - 使用 Google 工具栏进行发送

 1.怎样定制VC#DataGrid列标题?

  DataGridTableStyle dgts = new DataGridTableStyle();

  dgts.MappingName = "myTable"; //myTable为要载入数据的DataTable

  

  DataGridTextBoxColumn dgcs = new DataGridTextBoxColumn();

  dgcs.MappingName = "title_id";

  dgcs.HeaderText = "标题ID";

  dgts.GridColumnStyles.Add(dgcs);

  。。。

  dataGrid1.TableStyles.Add(dgts);

  2.检索某个字段为空的所有记录的条件语句怎么写?

  ...where col_name is null

  3.如何在c# Winform应用中接收回车键输入?

  设一下form的AcceptButton.

  4.比如Oracle中的NUMBER(15),在Sql Server中应是什么?

  NUMBER(15):用numeric,精度15试试。

  5.sql server的应用like语句的存储过程怎样写?

  select * from mytable where haoma like '%' + @hao + '%'

  6.vc# winform中如何让textBox接受回车键消息(假没没有按钮的情况下)?

  private void textBox1_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e)

  {

  if(e.KeyChar != (char)13)

  return;

  else

  //do something;

  }

  7.为什么(Int32)cmd.ExecuteScalar()赋值给Int32变量时提示转换无效?

  Int32.Parse(cmd.ExecuteScalar().ToString());

  8.DataSource为子表的DataGrid里怎样增加一个列以显示母表中的某个字段?

  在子表里手动添加一个列。

  DataColumn dc = new DataColumn("newCol", Type.GetType("System.String"));

  dc.Expression = "Parent.parentColumnName";

  dt.Columns.Add(dc); //dt为子表

  9.怎样使DataGrid显示DataTable中某列的数据时只显示某一部分?

  select ..., SUBSTR(string, start_index, end_index) as ***, *** from ***

  10.如何让winform的combobox只能选不能输入?

  DropDownStyle 属性确定用户能否在文本部分中输入新值以及列表部分是否总显示。

  值:

  DropDown --- 文本部分可编辑。用户必须单击箭头按钮来显示列表部分。

  DropDownList --- 用户不能直接编辑文本部分。用户必须单击箭头按钮来显示列表部分。

  Simple --- 文本部分可编辑。列表部分总可见。

  11.怎样使winform的DataGrid里显示的日期只显示年月日部分,去掉时间?

  sql语句里加上to_date(日期字段,'yyyy-mm-dd')

  12.怎样把 数据库表的二个列合并成一个列Fill进DataSet里?

  dcChehao = new DataColumn("newColumnName", typeof(string));

  dcChehao.Expression = "columnName1+columnName2";

  dt.Columns.Add(dcChehao);

  Oracle:

  select col1||col2 from table

  sql server:

  select col1+col2 from table

  13.如何从合并后的字段里提取出括号内的文字作为DataGrid或其它绑定控件的显示内容?即把合并后的字段内容里的左括号(和右括号)之间的文字提取出来。

  Select COL1,COL2, case

  when COL3 like '%(%' THEN substr(COL3, INSTR(COL3, '(' )+1, INSTR(COL3,')')-INSTR(COL3,'(')-1)

  end as COL3

  from MY_TABLE

  14.当用鼠标滚轮浏览DataGrid数据超过一定范围DataGrid会失去焦点。怎样解决?

  this.dataGrid1.MouseWheel+=new MouseEventHandler(dataGrid1_MouseWheel);

  private void dataGrid1_MouseWheel(object sender, MouseEventArgs e)

  {

  this.dataGrid1.Select();

  }

  15.怎样把键盘输入的'+'符号变成'A'?

  textBox的KeyPress事件中

  if(e.KeyChar == '+')

  {

  SendKeys.Send("A");

  e.Handled = true;

  }

  16.怎样使Winform启动时直接最大化?

  this.WindowState = FormWindowState.Maximized;

  17.c#怎样获取当前日期及时间,在sql语句里又是什么?

  c#: DateTime.Now

  sql server: GetDate()

  18.怎样访问winform DataGrid的某一行某一列,或每一行每一列?

  dataGrid[row,col]

  19.怎样为DataTable进行汇总,比如DataTable的某列值'延吉'的列为多少?

  dt.Select("城市='延吉'").Length;

  20.DataGrid数据导出到Excel后0212等会变成212。怎样使它导出后继续显示为0212?

  range.NumberFormat = "0000";

  21.

  ① 怎样把DataGrid的数据导出到Excel以供打印?

  ② 之前已经为DataGrid设置了TableStyle,即自定义了列标题和要显示的列,如果想以自定义的视图导出数据该怎么办?

  ③ 把数据导出到Excel后,怎样为它设置边框啊?

  ④ 怎样使从DataGrid导出到Excel的某个列居中对齐?

  ⑤ 数据从DataGrid导出到Excel后,怎样使标题行在打印时出现在每一页?

  ⑥ DataGrid数据导出到Excel后打印时每一页显示'当前页/共几页',怎样实现?

  ①

  private void button1_Click(object sender, System.EventArgs e)

  {

  int row_index, col_index;

  

  row_index = 1;

  col_index = 1;

  

  Excel.ApplicationClass excel = new Excel.ApplicationClass();

  excel.Workbooks.Add(true);

  

  DataTable dt = ds.Tables["table"];

  

  foreach(DataColumn dcHeader in dt.Columns)

  excel.Cells[row_index, col_index++] = dcHeader.ColumnName;

  

  foreach(DataRow dr in dt.Rows)

  {

  col_index = 0;

  foreach(DataColumn dc in dt.Columns)

  {

  excel.Cells[row_index+1, col_index+1] = dr[dc];

  col_index++;

  }

  row_index++;

  }

  excel.Visible = true;

  

  }

  

  private void Form1_Load(object sender, System.EventArgs e)

  {

  SqlConnection conn = new SqlConnection("server=tao;uid=sa;pwd=;database=pubs");

  conn.Open();

  

  SqlDataAdapter da = new SqlDataAdapter("select * from authors", conn);

  ds = new DataSet();

  da.Fill(ds, "table");

  

  dataGrid1.DataSource = ds;

  dataGrid1.DataMember = "table";

  }

  ②dataGrid1.TableStyles[0].GridColumnStyles[index].HeaderText;//index可以从0~dataGrid1.TableStyles[0].GridColumnStyles.Count遍历。

  ③ Excel.Range range;

  range=worksheet.get_Range(worksheet.Cells[1,1],xSt.Cells[ds.Tables[0].Rows.Count+1,ds.Tables[0].Columns.Count]);

  

  range.BorderAround(Excel.XlLineStyle.xlContinuous,Excel.XlBorderWeight.xlThin,Excel.XlColorIndex.xlColorIndexAutomatic,null);

  

  range.Borders[Excel.XlBordersIndex.xlInsideHorizontal].ColorIndex = Excel.XlColorIndex.xlColorIndexAutomatic;

  range.Borders[Excel.XlBordersIndex.xlInsideHorizontal].LineStyle =Excel.XlLineStyle.xlContinuous;

  range.Borders[Excel.XlBordersIndex.xlInsideHorizontal].Weight =Excel.XlBorderWeight.xlThin;

  

  range.Borders[Excel.XlBordersIndex.xlInsideVertical].ColorIndex =Excel.XlColorIndex.xlColorIndexAutomatic;

  range.Borders[Excel.XlBordersIndex.xlInsideVertical].LineStyle = Excel.XlLineStyle.xlContinuous;

  range.Borders[Excel.XlBordersIndex.xlInsideVertical].Weight = Excel.XlBorderWeight.xlThin;

  ④ range.HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter

  ⑤ worksheet.PageSetup.PrintTitleRows = "$1:$1";

  ⑥ worksheet.PageSetup.CenterFooter = "第&P页 / 共&N页";

  22.当把DataGrid的Cell内容赋值到Excel的过程中想在DataGrid的CaptionText上显示进度,但不显示。WHY?

  ...

  dataGrid1.CaptionText = "正在导出:" + (row + 1) + "/" + row_cnt;

  System.Windows.Forms.Application.DoEvents();

  ...

  

  处理当前在消息队列中的所有Windows消息。

  

  当运行Windows窗体时,它将创建新窗体,然后该窗体等待处理事件。该窗体在每次处理事件时,均将处理与该事件关联的所有代码。所有其他事件在队列中等待。在代码处理事件时,应用程序并不响应。如果在代码中调用DoEvents,则应用程序可以处理其他事件。

  如果从代码中移除DoEvents,那么在按钮的单机事件处理程序执行结束以前,窗体不会重新绘制。通常在循环中使用该方法来处理消息。

  23.怎样从Flash调用外部程序,如一个C#编译后生成的.exe?

  fscommand("exec", "应用程序.exe");

  ① 必须把flash发布为.exe

  ② 必须在flash生成的.exe文件所在目录建一个名为fscommand的子目录,并把要调用的可执行程序拷贝到那里。

  24.有没有办法用代码控制DataGrid的上下、左右的滚动?

  dataGrid1.Select();

  SendKeys.Send("{PGUP}");

  SendKeys.Send("{PGDN}");

  SendKeys.Send("{^{LEFT}"); // Ctrl+左方向键

  SendKeys.Send("{^{RIGHT}"); // Ctrl+右方向键

  25.怎样使两个DataGrid绑定两个主从关系的表?

  DataGrid1.DataSource = ds;

  DataGrid1.DataMember = "母表";

  ...

  DataGrid2.DataSouce = ds;

  DataGrid2.DataMember = "母表.关系名";

  26.assembly的版本号怎样才能自动生成?特别是在Console下没有通过VStudio环境编写程序时。

  关键是AssemblyInfo.cs里的[assembly: AssemblyVersion("1.0.*")],命令行编译时包含AssemblyInfo.cs

  27.怎样建立一个Shared Assembly?

  用sn.exe生成一个Strong Name:keyfile.sn,放在源程序目录下

  在项目的AssemblyInfo.cs里[assembly: AssemblyKeyFile("..\\..\\keyfile.sn")]

  生成dll后,用gacutil /i myDll.dll放进Global Assembly Cach.

  28.在Oracle里如何取得某字段第一个字母为大写英文A~Z之间的记录?

  select * from table where ascii(substr(字段,1,1)) between ascii('A') and ascii('Z')

  29.怎样取得当前Assembly的版本号?

  Process current = Process.GetCurrentProcess();

  FileVersionInfo myFileVersionInfo = FileVersionInfo.GetVersionInfo(current.MainModule.FileName);

  Console.WriteLine(myFileVersionInfo.FileVersion);

  30.怎样制作一个简单的winform安装程序?

  ① 建一个WinForm应用程序,最最简单的那种。运行。

  ② 添加新项目->安装和部署项目,'模板'选择'安装向导'。

  ③ 连续二个'下一步',在'选择包括的项目输出'步骤打勾'主输出来自',连续两个'下一步','完成'。

  ④ 生成。

  ⑤ 到项目目录下找到Setup.exe(还有一个.msi和.ini文件),执行。

  31.怎样通过winform安装程序在Sql Server数据库上建表?

  ① [项目]―[添加新项]

  类别:代码;模板:安装程序类。

  名称:MyInstaller.cs

  ② 在SQL Server建立一个表,再[所有任务]―[生成SQL脚本]。

  生成类似如下脚本(注意:把所有GO语句去掉):

  if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[MyTable]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)

  drop table [dbo].[MyTable]

  

  CREATE TABLE [dbo].[MyTable] (

  [ID] [int] NOT NULL ,

  [NAME] [nchar] (4) COLLATE Chinese_PRC_CI_AS NOT NULL

  ) ON [PRIMARY]

  

  

  ALTER TABLE [dbo].[MyTable] WITH NOCHECK ADD

  CONSTRAINT [PK_MyTable] PRIMARY KEY CLUSTERED

  (

  [ID]

  ) ON [PRIMARY]

  ③ [项目]―[添加现有项]。mytable.sql―[生成操作]-[嵌入的资源]。

  ④ 将MyInstaller.cs切换到代码视图,添加下列代码:

  先增加:

  using System.Reflection;

  using System.IO;

  然后:

  private string GetSql(string Name)

  {

  try

  {

    Assembly Asm = Assembly.GetExecutingAssembly();

    Stream strm = Asm.GetManifestResourceStream(Asm.GetName().Name + "." + Name);

    StreamReader reader = new StreamReader(strm);

    return reader.ReadToEnd();

  }

  catch (Exception ex)

  {

    Console.Write("In GetSql:"+ex.Message);

    throw ex;

  }

  }

  

  private void ExecuteSql(string DataBaseName,string Sql)

  {

  System.Data.SqlClient.SqlConnection sqlConn = new System.Data.SqlClient.SqlConnection();

  sqlConn.ConnectionString = "server=myserver;uid=sa;password=;database=master";

  System.Data.SqlClient.SqlCommand Command = new System.Data.SqlClient.SqlCommand(Sql,sqlConn);

  

  Command.Connection.Open();

  Command.Connection.ChangeDatabase(DataBaseName);

  try

  {

  Command.ExecuteNonQuery();

  }

  finally

  {

  Command.Connection.Close();

  }

  }

  protected void AddDBTable(string strDBName)

  {

  try

  {

  ExecuteSql("master","create DATABASE "+ strDBName);

  ExecuteSql(strDBName,GetSql("mytable.sql"));

  }

  catch(Exception ex)

  {

  Console.Write("In exception handler :"+ex.Message);

  }

  }

  

  public override void Install(System.Collections.IDictionary stateSaver)

  {

  base.Install(stateSaver);

  AddDBTable("MyDB"); //建一个名为MyDB的DataBase

  }

  ⑤ [添加新项目]―[项目类型:安装和部署项目]―[模板:安装项目]―[名称:MySetup]。

  ⑥ [应用程序文件夹]―[添加]―[项目输出]―[主输出]。

  ⑦ 解决方案资源管理器―右键―[安装项目(MySetup)]―[视图]―[自定义操作]。[安装]―[添加自定义操作]―[双击:应用程序文件夹]的[主输出来自***(活动)]。

  32.怎样用TreeView显示父子关系的数据库表(winform)?

  三个表a1,a2,a3, a1为a2看母表,a2为a3的母表。

  a1: id, name

  a2: id, parent_id, name

  a3: id, parent_id, name

  用三个DataAdapter把三个表各自Fill进DataSet的三个表。

  用DataRelation设置好三个表之间的关系。

  

  foreach(DataRow drA1 in ds.Tables["a1"].Rows)

  {

   tn1 = new TreeNode(drA1["name"].ToString());

   treeView1.Nodes.Add(tn1);

   foreach(DataRow drA2 in drA1.GetChildRows("a1a2"))

   {

  tn2 = new TreeNode(drA2["name"].ToString());

  tn1.Nodes.Add(tn2);

  foreach(DataRow drA3 in drA2.GetChildRows("a2a3"))

  {

   tn3 = new TreeNode(drA3["name"].ToString());

   tn2.Nodes.Add(tn3);

  }

   }

  }

  33.怎样从一个form传递数据到另一个form?

  假设Form2的数据要传到Form1的TextBox。

  在Form2:

  // Define delegate

  public delegate void SendData(object sender);

  // Create instance

  public SendData sendData;

  在Form2的按钮单击事件或其它事件代码中:

  if(sendData != null)

  {

   sendData(txtBoxAtForm2);

  }

  this.Close(); //关闭Form2

  在Form1的弹出Form2的代码中:

  Form2 form2 = new Form2();

  form2.sendData = new Form2.SendData(MyFunction);

  form2.ShowDialog();

  ====================

  private void MyFunction(object sender)

  {

  textBox1.Text = ((TextBox)sender).Text;

  }

  


......


详细内容...