第一个C#应用 【搜索软件】

搜索软件V1.0 【附软件截图】【http://pan.baidu.com/s/1mihEbe4】

设备搜索:支持广播搜索【local search】,指定ip【range search】搜索,直接web【web browser】访问,以及telnet【command line】功能;telnet 默认为23端口;

  实现搜索udp固定包头的设备或者pc机,点击对应的ip,可以直接进行网页或者telnet 登陆。最初设计网页登陆框模拟qq的登陆界面,免去用户名密码的麻烦,但是因为调用webservice进行认证时,总是出错,故暂时使用的是系统默认浏览器;

  网页访问时,为了避免输入用户名密码,可以有两种做法:

  其一,调用win32Api 通过windows消息机制,当点击web浏览时,直接模拟输入用户名,密码;

  其二,调用内部的webservice,直接进行认证;

  其三,通过调用已经发布的其他浏览器的接口,例如火狐 等;

  优缺点:第一种方法,网页开发过程中需要考虑多浏览器,以及不同浏览器内核兼容;第二种方法,因内部webservice 主要是对ie核接口的封装,软件内部通过webservice构建浏览器时,一个是消耗比较大,使用完后需要及时资源需要及时释放,网页开发时要考虑ie版本之间的差异,尤其是低版本ie的兼容性;

简单代码:

1.网络编程,listview使用;

2.ui夸线程方法:

  1>直接关闭跨线程检测【可能会导致崩溃,不推荐使用】:

    Control.CheckForIllegalCrossThreadCalls = false;

  2>通过Invoke

1         delegate void ShowMessageforViewCallBack(ListView listview,string ip,Byte[] msg);
2         delegate void CloseFormCallBack(Form frm);
View Code

3.调用telnet:

1                     cmd.StartInfo.FileName = "cmd.exe";
2                     cmd.StartInfo.Arguments = "/k telnet " + listView_ShowDevices.SelectedItems[0].SubItems[1].Text;
3                     cmd.StartInfo.Arguments += " 23 ";
4 
5                     cmd.StartInfo.CreateNoWindow = false;
6                     cmd.Start();
View Code

4.数据解析:

 1         private void ShowMessageforView(ListView listview,string ip,Byte[] msg)
 2         {
 3             if (listview.InvokeRequired)
 4             {
 5                 ShowMessageforViewCallBack showMessageforViewCallBack = ShowMessageforView;
 6                 listview.Invoke(showMessageforViewCallBack, new object[] { listview, ip, msg });
 7             }
 8             else
 9             {
10                 string mac = String.Format("{0:X2}:{1:X2}:{2:X2}:{3:X2}:{4:X2}:{5:X2}",
11                     msg[20], msg[21], msg[22], msg[23], msg[24], msg[25]);
12                 if (null == listview.FindItemWithText(mac))
13                 {
14 
15                    // string ip = String.Format("{0:d}.{1:d}.{2:d}.{3:d}", msg[34], msg[35], msg[36], msg[37]);
16                     string ver = String.Format("{0:d}.{1:d2}", msg[26], msg[27]);
17 
18                     char[] c_msg = Encoding.ASCII.GetChars(msg);
19                     string desc = new string(c_msg, 40, 32);
20                     listview.Items.Add(new ListViewItem(new string[] { mac, ip, ver, desc }));
21                 }
22             }
23         }
View Code

 

5.两个线程,两个委托实现跨线程控件,以及常用控件的使用:

附:

<1>主界面

<2>没选中设备时点击【web Browser】【command line】提示

<3>指定地址搜索

<4>本地搜索

<5>命令行界面

 

邮箱:1003278902@qq.com

posted @ 2016-03-25 13:28  雨点~  阅读(413)  评论(0)    收藏  举报