摘要: 引言这是一篇基于Socket进行网络编程的入门文章,我对于网络编程的学习并不够深入,这篇文章是对于自己知识的一个巩固,同时希望能为初学的朋友提供一点参考。文章大体分为四个部分:程序的分析与设计、C#网络编程基础(篇外篇)、聊天程序的实现模式、程序实现。程序的分析与设计1.明确程序功能如果大家现在已经参加了工作,你的经理或者老板告诉你,“小王,我需要你开发一个聊天程序”。那么接下来该怎么做呢?你是不是在脑子里有个雏形,然后就直接打开VS2005开始设计窗体,编写代码了呢?在开始之前,我们首先需要进行软件的分析与设计。就拿本例来说,如果只有这么一句话“一个聊天程序”,恐怕现在大家对这个“聊天程序” 阅读全文
posted @ 2012-05-02 21:19 注销账户 阅读(381) 评论(0) 推荐(0) 编辑
摘要: 引言C#网络编程系列文章计划简单地讲述网络编程方面的基础知识,由于本人在这方面功力有限,所以只能提供一些初步的入门知识,希望能对刚开始学习的朋友提供一些帮助。如果想要更加深入的内容,可以参考相关书籍。本文是该系列第一篇,主要讲述了基于套接字(Socket)进行网络编程的基本概念,其中包括TCP协议、套接字、聊天程序的三种开发模式,以及两个基本操作:侦听端口、连接远程服务端;第二篇讲述了一个简单的范例:从客户端传输字符串到服务端,服务端接收并打印字符串,将字符串改为大写,然后再将字符串回发到客户端,客户端最后打印传回的字符串;第三篇是第二篇的一个强化,讲述了第二篇中没有解决的一个问题,并使用了异 阅读全文
posted @ 2012-05-02 21:17 注销账户 阅读(352) 评论(0) 推荐(0) 编辑

2012年5月2日

摘要: 引言大家每天都在看博客,发表评论,实现一个评论系统也是一名Web开发者的基本要求。虽然评论只是一个很普通的功能,但是实现评论的引用,尤其是无限引用,却有一定的困难。身为“网易工程队”的正规军,同时又作为一名程序开发人员,有必要向大家展示一下“盖楼”的方法。效果预览:http://www.tracefact.net/demo/NestedComment/Default.aspxNOTE:本文使用 基于业务对象(List<Comment>)的筛选 来进行引用列表的搜寻,对数据库仅进行了一次读取。想也应该能想明白:不管是初始评论还是包含引用的评论都属于同一文章下,一次读取该文章下的评论, 阅读全文
posted @ 2012-05-02 21:50 注销账户 阅读(246) 评论(0) 推荐(0) 编辑
摘要: 我觉得如果想成为一名优秀的开发者,不仅要积极学习时下流行的新技术,比如WCF、Asp.Net MVC、AJAX等,熟练应用一些已经比较成熟的技术,比如Asp.Net、WinForm。还应该有着牢固的计算机基础知识,比如数据结构、操作系统、编译原理、网络与数据通信等。有的朋友可能觉得这方面的东西过于艰深和理论化,望而却步,但我觉得假日里花上一个下午的时间,研究一种算法或者一种数据结构,然后写写心得,难道不是一件乐事么?所以,我打算将一些常见的数据结构和算法总结一下,不一定要集中一段时间花费很大精力,只是在比较空闲的时间用一种很放松的心态去完成。我最不愿意的,就是将写博客或者是学习技术变为一项工作 阅读全文
posted @ 2012-05-02 21:27 注销账户 阅读(326) 评论(0) 推荐(0) 编辑
摘要: 这篇文章将完成Part.4中剩余的部分,它们本来是一篇完整的文章,但是因为上一篇比较长,合并起来页数太多,浏览起来可能会比较不方便,我就将它拆为两篇了,本文便是它的后半部分。我们继续进行上一篇没有完成的步骤:客户端接收来自服务端的文件。4.客户端接收文件4.1服务端的实现对于服务端,我们只需要实现上一章遗留的sendFile()方法就可以了,它起初在handleProtocol中是注释掉的。另外,由于创建连接、获取流等操作与receiveFile()是没有区别的,所以我们将它提出来作为一个公共方法getStreamToClient()。下面是服务端的代码,只包含新增改过的代码,对于原有方法我只 阅读全文
posted @ 2012-05-02 21:25 注销账户 阅读(171) 评论(0) 推荐(0) 编辑
摘要: 文件传输前面两篇文章所使用的范例都是传输字符串,有的时候我们可能会想在服务端和客户端之间传递文件。比如,考虑这样一种情况,假如客户端显示了一个菜单,当我们输入S1、S2或S3(S为Send缩写)时,分别向服务端发送文件Client01.jpg、Client02.jpg、Client03.jpg;当我们输入R1、R2或R3时(R为Receive缩写),则分别从服务端接收文件Server01.jpg、Server02.jpg、Server03.jpg。那么,我们该如何完成这件事呢?此时可能有这样两种做法:类似于FTP协议,服务端开辟两个端口,并持续对这两个端口侦听:一个用于接收字符串,类似于FTP 阅读全文
posted @ 2012-05-02 21:24 注销账户 阅读(145) 评论(0) 推荐(0) 编辑
摘要: 这篇文章我们将前进一大步,使用异步的方式来对服务端编程,以使它成为一个真正意义上的服务器:可以为多个客户端的多次请求服务。但是开始之前,我们需要解决上一节中遗留的一个问题。消息发送时的问题这个问题就是:客户端分两次向流中写入数据(比如字符串)时,我们主观上将这两次写入视为两次请求;然而服务端有可能将这两次合起来视为一条请求,这在两个请求间隔时间比较短的情况下尤其如此。同样,也有可能客户端发出一条请求,但是服务端将其视为两条请求处理。下面列出了可能的情况,假设我们在客户端连续发送两条“Welcome to Tracefact.net!”,则数据到达服务端时可能有这样三种情况:NOTE:在这里我们 阅读全文
posted @ 2012-05-02 21:23 注销账户 阅读(157) 评论(0) 推荐(0) 编辑
摘要: 服务端客户端通信在与服务端的连接建立以后,我们就可以通过此连接来发送和接收数据。端口与端口之间以流(Stream)的形式传输数据,因为几乎任何对象都可以保存到流中,所以实际上可以在客户端与服务端之间传输任何类型的数据。对客户端来说,往流中写入数据,即为向服务器传送数据;从流中读取数据,即为从服务端接收数据。对服务端来说,往流中写入数据,即为向客户端发送数据;从流中读取数据,即为从客户端接收数据。同步传输字符串我们现在考虑这样一个任务:客户端打印一串字符串,然后发往服务端,服务端先输出它,然后将它改为大写,再回发到客户端,客户端接收到以后,最后再次打印一遍它。我们将它分为两部分:1、客户端发送, 阅读全文
posted @ 2012-05-02 21:22 注销账户 阅读(167) 评论(0) 推荐(0) 编辑

2011年7月21日

摘要: 1.文件正由另一进程使用,因此该进程无法访问该文件问题描述:this.pictureBox1.Image=Image.FormFile(sourceFile);...把sourceFile移动到另外一个文件夹if(this.pictureBox1.Image!=null){ this.picutreBox1.Image.Dispose();}File.Copy(sourceFile,destinatFile);File.Delete(sourceFile);结果时不时的在File.Delete(sourceFile);处抛出异常:文件正由另一进程使用,因此该进程无法访问该文件。把File.Co 阅读全文
posted @ 2011-07-21 13:41 注销账户 阅读(624) 评论(0) 推荐(0) 编辑

2011年5月26日

摘要: 晚上忙着忙着,不知道自己在忙些啥,看看这看看那的,新进一家公司,做的东西,以前都没有接触过的,上班的时候需要用到INI文件来记录一些信息。我这个呢是没有加密的,当然加一个加密的,或者转成字节都可以,这样子就安全点。随便整理下这些老生常谈的东西,博客园也有例子。具体网址我不记得了,上班的时候看的。贴点代码,更新下博客。下面是INIFileHepler类 /// <summary> /// 写入INI文件 /// </summary> /// <param name="section">节点名称[如[TypeName]]</param& 阅读全文
posted @ 2011-05-26 00:49 注销账户 阅读(1732) 评论(0) 推荐(0) 编辑

导航