博文

用C#编写获取远程IP,MAC的方法(2007-06-11 11:31:00)

摘要: 如果要想获得远程的地址,需要用sendarp这个函数来实现。具体的代码如下:
[DllImport("Iphlpapi.dll")]
private static unsafe extern int SendARP(Int32 dest,Int32 host,ref IntPtr mac,ref IntPtr length);
[DllImport("Ws2_32.dll")]
private static extern Int32 inet_addr(string ip);

Int32 ldest= inet_addr("157.60.68.163");//目的地的ip
Int32 lhost= inet_addr("157.60.68.33");//本地的ip

try
{
Byte[] macinfo=new Byte[6];
Int32 length=6;

IntPtr mac=new IntPtr(macinfo[0]);
IntPtr len=new IntPtr(6);
int ii=SendARP(ldest,lhost, ref mac, ref len);

Console.WriteLine("Mac Add:"+mac);
Console.WriteLine("length:"+len);


}
catch(Exception err)
{
Console.WriteLine(err);
}
......

阅读全文(2841) | 评论:0 | 复制链接

treeview问题.每个结点包含多个值的实现。(添加、删除、拖拉、连接数据库等(2007-06-04 21:15:00)

摘要:利用TreeNode 的 Tag属性,因为它是一个很灵活的属性,它的类型可以定义成任何类型,包括自定义类型。我们定义一个如下的类:
public class TreeNodeTag
{
public string ID ;//当前ID值
public string LB;//类别
public string parentID;//父节点ID
public int js;//级数
public string zf;//是否作废
}
那么在定义TreeNode的时候应该如下设置它的Tag值
TreeNode node = New TreeNode();
TreeNodeTag Ttag = New TreeNodeTag();
Ttag.ID="12"'
Ttag.js="1";
Ttag.LB="资产类";
node.Tag=Ttag;
node.Text="测试节点";
以下是如何取节点的多个数据信息:
假如node是TreeView的一个节点,要得到它的各种信息如下:
TreeNodeTag Ttag = node.Tag as TreeNodeTag;
string ID= Ttag.ID.Trim();
string js= Ttag.js.Trim();
string LB= Ttag.LB.Trim();
这样就完成了一个树节点的存取工作了。......

阅读全文(4301) | 评论:0 | 复制链接

C#中判断空字符串的3种方法性能分析(2007-04-28 16:03:00)

摘要:C#中判断空字符串的3种方法性能分析  3种方法分别是:
string a="";
1.if(a=="")
2.if(a==String.Empty)
3.if(a.Length==0) 3种方法都是等效的,那么究竟那一种方法性能最高呢?本人用实验说明问题。 建立3个aspx页面(为什么用网页,主要是利用Microsoft Application Center Test ) WebForm1.aspx
private void Page_Load(object sender, System.EventArgs e)
  {   string a="";
   for(int i=0;i<=1000000;i++)
   {    if(a=="")    {    }   }
  } WebForm2.aspx
private void Page_Load(object sender, System.EventArgs e)
  {
   string a="";
   for(int i=0;i<=1000000;i++)
   {    if(a==String.Empty)    {    }   }
  } WebForm3.aspx
private void Page_Load(object sender, System.EventArgs e)
  {   string a="";
   ......

阅读全文(4306) | 评论:1 | 复制链接

类继承中构造函数和析构函数的调用(2007-04-28 16:02:00)

摘要:类继承中构造函数和析构函数的调用 现在,有三个类,类的定义如下 class CA
{
public:
 CA(){cout<<"CA constructor"<<endl;}
 
    ~CA(){cout<<"CA desstructor"<<endl;} }; class CB:public CA
{
public:
 CB(){cout<<"CB constructor"<<endl;}
 
 ~CB(){cout<<"CB desstructor"<<endl;}
}; class CC:public CB
{
public:
 CC(){cout<<"CC constructor"<<endl;}
 
 ~CC(){cout<<"CC desstructor"<<endl;}
}; CA是爷爷,CB是爸爸,CC是儿子。 那么任何一本C++的书都会讲,构造函数的调用顺序是CA CB CC,析构函数的调用顺序是CC,CB,CA,什么???你的书没讲,靠,扔了吧 于是 (1) int main()
{
   CC p ;
}
这个程序运行结果是
CA constructor
CB constructor
CC constructor CC desstructor
CB desstructor
CA desstructor 靠,太简单了,一个鸡蛋飞过来了,:( 继续…………………… (2) 再做第二个试验之前,先做一点小小修改
~CA(){cout<<"CA desstructor"<<endl;}  ----->>>
virtual  ~CA(){cout<<"CA desstructor"<<endl;} 修改m......

阅读全文(6212) | 评论:1 | 复制链接

史上20个最令人讨厌的技术产品排行榜(2007-04-28 16:02:00)

摘要:IT无大事,PC World编写了一个名单,列出了史上最令人讨厌的技术产品。前10个来源于读者的投票,后面10个是编辑们想增加浏览量添上去的。排在第一位的是AOL免费发送的CD,自1993年起到2006年,AOL发放的CD超过10亿张,对环境造成了可怕的灾难,也令很多人苦恼。"
2.Windows Me (2000):千年(Millennium)应该指的是修补程序故障要花的时间
3.Apple iTunes, Microsoft Windows Media Player, Microsoft Zune, Napster (2003至今);糟糕的DRM
4.McAfee Internet Security, Symantec Norton Internet Security (1998至今):唠叨的软件,我们的电脑已经够糟了,它们还要添乱,时不时的提醒你去升级或者购买新版。
5.Real Networks (Progressive Networks) RealPlayer (1996到2004):声名狼藉的Real总是想从你身上攒钱
6.Bonzi Buddy (1999-2004)
7.MySpace (2003 至今)
8.Microsoft Windows Vista (2007):对硬件的苛求,令人讨厌的“取消—继续”提示。
9.Microsoft Windows Update (1998年 至今):喜欢WGA吗?
10.Apple QuickTime for Windows (2001 至今):如果你安装了它,你会发现它会阴魂不散的跟着你。" 后面还有Microsoft Office 97 (1997);Adobe (Macromedia) Flash (1996年至今);AOL Instant Messenger, Microsoft Windows Messenger, Yahoo Messenger (1997 至今);Sony PlayStation 3 (2006);eBay (1995 至今);Microsoft Office Outlook 2003 (2003)等等。
PC World还总结了14条让消费者生气的方法:第一条就是安装或卸载软件时强迫用户重启电脑。......

阅读全文(3467) | 评论:1 | 复制链接

"=="和equals方法有什么区别(2007-03-21 12:56:00)

摘要: 
 
"=="和equals方法有什么区别  ==是判断两个变量或实例是不是指向同一个内存空间
equals是判断两个变量或实例所指向的内存空间的值是不是相同 ==是指对内存地址进行比较
squals()是对字符串的内容进行比较 ==指引用是否相同
equals()指的是值是否相同 A.==操作符专门用来比较变量的值是否相等,由于变量名只是内存地址的引用名称,所以而不代表变量本身,
由此可知道变量的值指的是好像某一块内在地址,请看示例 Int intA=10; Int intB=10; int intArrA[]=new int[2];         int intArrB[]=new int[2];         for(int i=0;i<2;i++){             intArrA[i]=0;             intArrB[i]=0; } System.out.println("(intA==intB)="+(intA==intB)); System.out.println("(intArrA==intArrB)="+(intArrA==intArrB)); System.out.println("(intArrA[0]==intArrB[0])="+(intArrA[0]==intArrB[0])); 输出结果是: (intA==intB)=true (intArrA==intArrB)=false (intArrA[0]==intArrB[0])=true 从结果可知, intArrA和intArrB是数组名称,故代表的是内存指针,所以上述结论在此可以通过,另外 因: intArrA[0],intArrB[0]分别在不同的地址,所以(intArrA[0]......

阅读全文(6592) | 评论:1 | 复制链接

UNION 和UNION ALL 的区别(2007-03-20 17:20:00)

摘要:  在数据库中,UNION和UNION ALL关键字都是将两个结果集合并为一个,但这两者从使用和效率上来说都有所不同。 UNION在进行表链接后会筛选掉重复的记录,所以在表链接后会对所产生的结果集进行排序运算,删除重复的记录再返回结果。 实际大部分应用中是不会产生重复的记录,最常见的是过程表与历史表UNION。如: select * from gc_dfys union select * from ls_jg_dfys 这个SQL在运行时先取出两个表的结果,再用排序空间进行排序删除重复的记录,最后返回结果集,如果表数据量大的话可能会导致用磁盘进行排序。 而UNION ALL只是简单的将两个结果合并后就返回。这样,如果返回的两个结果集中有重复的数据,那么返回的结果集就会包含重复的数据了。 从效率上说,UNION ALL 要比UNION快很多,所以,如果可以确认合并的两个结果集中不包含重复的数据的话,那么就使用UNION ALL,如下: select * from gc_dfys union all select * from ls_jg_dfys ......

阅读全文(3004) | 评论:0 | 复制链接

关于WebService最大的请求问题(2007-03-20 13:55:00)

摘要:我写了一个传输文件的WebService
当我传一个大于3MB的XML文件时出现如下错误:
System.Web.Services.Protocols.SoapException: 在运行配置文件中指定的扩展时出现异常。 ---> System.Web.HttpException: 超过了最大请求长度。
at System.Web.HttpRequest.GetEntireRawContent()
at System.Web.HttpRequest.get_InputStream()
at System.Web.Services.Protocols.SoapServerProtocol.Initialize()
--- 内部异常堆栈跟踪的结尾 ---
at System.Web.Services.Protocols.SoapServerProtocol.Initialize()
at System.Web.Services.Protocols.ServerProtocolFactory.Create(Type type, HttpContext context, HttpRequest request, HttpResponse response, Boolean& abortProcessing)
3MB以下的XML文件是OK的,是不是WebService有最大请求限制
能不能把这个限制改大一点呢
帮帮我呀! 在Web.config和App.config中加入
<microsoft.web.services2>
<messaging>
<maxRequestLength>628000</maxRequestLength>
</messaging>
<diagnostics />
</microsoft.web.services2>
maxRequestLength里填入你想要的大小kb为单位
详见 :http://calmzeal.cnblogs.com/archive/2006/01/05/311429.html   那就配置这个:

阅读全文(6649) | 评论:0 | 复制链接

Xml WebService完全实例解析(2007-03-20 13:52:00)

摘要:Xml WebService完全实例解析(一)               首先,我们必须了解什么是webservice.就概念上来说,可能比较复杂,不过我们可以有个宏观的了解:webservice就是个对外的接口,里面有函数可供外部客户调用(注意:里面同样有客户不可调用的函数).假若我们是服务端,我们写好了个webservice,然后把它给了客户(同时我们给了他们调用规则),客户就可以在从服务端获取信息时处于一个相对透明的状态.即是客户不了解(也不需要)其过程,他们只获取数据.         webservice传递的数据只能是序列化的数据,典型的就是xml数据,这里我们也只讨论xml数据的传输.         有了一些对xml webservice的初步了解后,我们将切入正题,即是用一个具体的webservice事例的形式来讲解具体的webservice用法,用具体的事例来讲解一个概念我想怎么也要比单纯的说理能让人容易理解吧.         这里,我们将以一个简单的分布式课件搜索系统为例来讲解.使用VS2003为编译环境,C#为语言,SqlServcer2000为数据库.(这个例子来源于一位网上朋友的文章的启发,觉得很能代表webservice的特点,就按那个想法做了这么个系统来示例了)         首先,明确我们要做什么.我们需要一个对客户的接口,也就是个站点,我们把它称做ServiceGatherSite,它是何种形式都无所谓,甚至它本身并不需要数据库,它只是提供给用户一个查询的接口,真正的服务,普通用户是不接触到的.然后,这里我们还需要若干个提供服务的站点,我们可以称它们为资源站,这里为简单起见,假设有两个资源站,分别叫WebSiteA,WebSiteB,它们可以是不对外公布的,只是为了丰富查询数据而存在.最后,是我们最需要关注的东......

阅读全文(9595) | 评论:2 | 复制链接

麻将高级技巧(2007-02-25 14:45:00)

摘要:中华麻将高级技巧 中华麻将竞技,历史悠久,远远流长。相传麻将系郑和下西洋时发明,由于
长期在海洋上航行,船上的人都很无聊,郑和便想出此种玩耍方法,借以缓解船员
们的苦闷。

筒(饼)子代表当时的铜钱,一饼便是一个铜板,是当时货币的最小单位。
条(索)子代表铜钱以上的单位,大致是“贯”或“串”的意思。万字代表最高货
币单位,即万贯的意思。东西南北风代表方向和方位。箭牌中发白代表平安吉祥。
而花牌是替代牌,即所谓的听用,花样很多,如财神等,据说是后来添加的,郑和
原发明并没有此序列。

众所周知,长期以来,麻将被作为是一种较为低级的赌博工具。因此,人们
往往感到或想到的就是赌博,而很少想到它的技巧性、灵活性、应变性。更很少有
人认识到,麻将作为一种运动,它对人的大脑的锻炼作用,以及性情磨练作用。要
达到麻将的正面效应,降低负面恶性,必须提高麻将技巧,使自己成为一个好牌手
,高手、甚至跻身超一流之列。

 
身心意志修炼
1、修炼身心

玩麻将必须要有非常好的心理素质和心理承受能力,这里所讲的心理素质,
不仅是指对胜负输赢有个平常心,还包括无小人心和无整人之心。如果说,内心世
界平常存在着,捞一把、整人之心,对别人钱财、能力忌妒,甚至报复心,均属“
心魔”重之列。对于“心魔”较重的人,一般不适合玩麻将,最好不要与麻将沾边
。玩麻将时,应重点修炼自己持平时心,不对一付牌,一场竞技的胜负计较。不对
大小牌(分值高低)计较。更不能与初学者、牌力弱的人计较或理论。
2、修炼竞技心理

前面讲述的“心魔”是一个人的日常社会生活中的非善意心理。这里说讲的
是牌手在麻将竞技过程中的心理。如,1、大多数的牌手都喜欢“碰牌”,而好牌手
则普遍认为“碰牌”属于“恶手”。实战中经典的总结是“上碰下自模”。2、成都
麻将竞技中,很多的牌手是“见牌就杠”。在实战中,“杠牌”无功的概率约占
55%-60%以上,被抢的概率约占10%,杠上炮的概率约占30%,杠上开花概率仅占
1%-5%。“杠牌”在错牌效果方面,实质上与碰牌差不多。因此,在杠后下家自模的
情况约占30%左右。在重庆、雅安等地麻将竞......

阅读全文(29351) | 评论:5 | 复制链接