第一个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);
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();
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 }
5.两个线程,两个委托实现跨线程控件,以及常用控件的使用:
附:
<1>主界面
<2>没选中设备时点击【web Browser】【command line】提示
<3>指定地址搜索
<4>本地搜索
<5>命令行界面
邮箱:1003278902@qq.com

浙公网安备 33010602011771号