04 2013 档案

摘要:前几天写了篇有关写Web服务器的博文,写得不好,多亏园友们的意见,给了我继续探究的动力。这篇就关于上次做的Web服务器做了些更改。 1.支持ASPX页面的访问多亏了园友的提点,使用了ApplicationHost类,使得宿主程序能够处理ASP.NET请求。后来上网搜了一下,原来就是写一个ASP.NET的宿主程序。上MSDN看了一下还不怎么明白,终究还是找了一些博文来看才明白。ApplicationHost属于System.Web.Hosting命名空间,要使用这个类要添加System.Web.dll引用。先上一点代码再解释吧1 private AspxCreator... 阅读全文
posted @ 2013-04-30 23:33 猴健居士 阅读(3878) 评论(5) 推荐(2) 编辑
摘要:自己写一个使用Http协议的服务器。在谷歌搜了一下,发现其实.NET Framework里面本身提供了HttpListener类,看别人的博文介绍是它是对Socket的简单封装,也有一些人没有用这个类,还是直接用Socekt写了服务器。说是Socket的扩展性反而比较好。HttpListener毕竟是微软封装好的,安全性应该一般会比用Socket写的要高,如果大牛写的就不同了,像我这等水货,其实还是用HttpListener要好一些。但也是个尝试,也是学习,我尝试用Socket写。虽然说是基于Socket,但实际上用的Socket的连接池。连接池的实现细节在上一篇博文《Socket连接池》.. 阅读全文
posted @ 2013-04-27 08:25 猴健居士 阅读(6693) 评论(23) 推荐(8) 编辑
摘要:“池”这个概念好像最早是在操作系统的课上听过的,到后来出来工作的第二天组长也跟我提起“池”这个东东。它给我的感觉是某种对象的集合,如果要用的话就取出,不用的话就放回。在学多线程的时候有接触过线程池,在写《Socket 一对多通信》的时候想到了Socket连接池这回事,不过在网上谷歌了一下,发现这类的文章貌似不多,看了一下园友的博文《高性能Socket设计实现》,获益良多,下了份源码来看,虽然有一部分看不明白,而且由于个人水平跑不了那份代码,但是从中我学到了不少,至少我写的“池”有一部分是用了这位田大哥的思想。 先来分析各个类之间的结构,整个连接池里面实际上是有两个池,一个是在异步通信中可... 阅读全文
posted @ 2013-04-25 12:47 猴健居士 阅读(10693) 评论(12) 推荐(7) 编辑
摘要:有天晚上还没睡着的时候,突然想起以前做课程设计时,有同学搞那个公交线路查询,老师上课时还提过什么只能查出换乘两次的线路,我不知道是那程序限制了换乘的次数还是那个算法查不出换乘两次以上的线路了,如果是后者,那个算法就有点糟糕。后来就想,如果给我做的话怎么做呢,别人写公交查询,我这个列车迷就写个地铁线路查询,其实感觉地铁的比公交的简单多了。 这样的线路查询,说白了其实也是图的遍历问题,大二学数据结构的时候,在课上老师有说到图的遍历算法能解决线路查询问题,也说到某些物体移动的动画,图能搞出来。后者我完全不明白了。前者我现在还能用得上。 最直接的方法,就把各个站点作为一个结点连在一起,成为一个... 阅读全文
posted @ 2013-04-19 08:30 猴健居士 阅读(5595) 评论(26) 推荐(11) 编辑
摘要:上一次的博文说错了东西,幸好有园友指出。才把错误改正过来,顺便也把利用SocketAsyncEventArgs进行Socket异步通信这方面的知识整理一下。 之前看了网上的代码,每进行一次异步操作都new 一个SocketAsyncEventArgs对象,然后网友评论太浪费资源了,于是就误以为用BeginXXX进行Socket异步通信会更优,幸好有园友指出我的误区,再看了这篇文章《net3.5与.net2.0 Socket性能比较》之后才发现SocketAsyncEventArgs是.NET Framework 3.5才出现的,而IAsyncResult是.NET Framework ... 阅读全文
posted @ 2013-04-16 12:44 猴健居士 阅读(10996) 评论(15) 推荐(6) 编辑
摘要:异步这个词以前在课堂上也听过,那时候只是听,直到在做项目的时候用到多线程,在体会到异步是怎样的,到最近做的东西对异步更加深刻了,进程通信时调Windows API SendMessage和PostMessage的区别。最近搞的Socket编程也是有异步的,Socket当然要有异步才行,不然服务端Accept一次就卡一次在那里,客户端Connect一次就卡一次。每Send一次,Receive一次都会卡一次,这样不好。 在网上谷歌过一下,发现Socket的异步可以有两种方式,一种是用 SocketAsyncEventArgs 配合AcceptAsync,SendAsync,ReceiveAs... 阅读全文
posted @ 2013-04-13 13:52 猴健居士 阅读(7316) 评论(14) 推荐(0) 编辑
摘要:这篇文章橙色的文字都是废话,不耐烦的园友可以跳过那些文字。包括这句话。 最初接触Socket编程的是在学校的java课上,可那时候没心学java,老师讲的Socket也没怎么理会,上机操作时,上网拷了一段C#的客户端和服务端代码,分别与java写的服务端和客户端进行通信。至于整个通信流程是怎样的没理会,直到写上一篇博文时才清楚。 还记得那时候上课老师问过如果一个服务端要跟两个客户端通信,那怎么办?接着他复制粘贴了一下创建Socket,绑定,监听那几行代码。1 ServerSocket ss1 = new ServerSocket(8081);2 Socket s1 = ss1.acce... 阅读全文
posted @ 2013-04-10 12:52 猴健居士 阅读(19589) 评论(2) 推荐(3) 编辑
摘要:基础比较差,知识不够全面,Socket编程方面还是个空白页,网上关于这方面的文章不少,学习了之后,做一下笔记。关于Socket的概念等基础知识我就不想累赘了。本文只想通过跟实际的事情的类比来记忆一个很简单的Socket编码过程。好,直奔主题。话说有个呆子A君,想干这个客服,他就先搞到一个能正常通话的手机,能正常通话肯定会有电话号码。那么客服人员A君,向外公布了他的客服电话,管他是通过什么途径,总之有人知道就行了。总之这个A君就等啊等啊 等着他的电话响。花开两朵各表一枝。有个茂利B君也不知通过什么途径得到了A君的电话,于是B君掏出他的山寨手机。B君迅速拨号,嘟嘟嘟。。。。与此同时,A君的电话响了 阅读全文
posted @ 2013-04-05 13:21 猴健居士 阅读(3906) 评论(13) 推荐(1) 编辑
摘要:背景对于.NET 原本提供的DataGridView控件,制作成如下形式的表格是毫无压力的。但是如果把表格改了一下,变成如下形式传统的DataGridView就做不到了,如果扩展一下还是行的,有不少网友也扩展了DataGridView控件,不过有些也只能制作出二维的表头。或者使用第三方的控件,之前也用过DevExpress的BoundGridView。不过在没有可使用的第三方控件的情况下,做到下面的效果,就有点麻烦了。那得自己扩展了,不过最后还是用了一个控件库的报表控件,Telerik的Reporting。不过我自己还是扩展了DataGridView,使之能制作出上面的报表。准备学习了一些网友 阅读全文
posted @ 2013-04-03 08:29 猴健居士 阅读(6550) 评论(18) 推荐(13) 编辑

点击右上角即可分享
微信分享提示