WEB开发网
开发学院软件开发C语言 C#网络编程(异步传输字符串) - Part.3 阅读

C#网络编程(异步传输字符串) - Part.3

 2009-03-26 08:20:01 来源:WEB开发网   
核心提示: 运行上面的程序,可以得到如下的输出:OK,C#网络编程(异步传输字符串) - Part.3(5),从上面的输出可以看到,这个方法能够满足我们的要求,就需要越来越高的抽象,所以从现在起我们不再把所有的代码全部都扔进Main()里,对于这篇文章最开始提出的问题,可以很轻松地通过加入这个方法来解

运行上面的程序,可以得到如下的输出:

C#网络编程(异步传输字符串) - Part.3

OK,从上面的输出可以看到,这个方法能够满足我们的要求。对于这篇文章最开始提出的问题,可以很轻松地通过加入这个方法来解决,这里就不再演示了,但在本文所附带的源代码含有修改过的程序。在这里花费了很长的时间,接下来让我们回到正题,看下如何使用异步方式完成上一篇中的程序吧。

异步传输字符串

在上一篇中,我们由简到繁,提到了服务端的四种方式:服务一个客户端的一个请求、服务一个客户端的多个请求、服务多个客户端的一个请求、服务多个客户端的多个请求。我们说到可以将里层的while循环交给一个新建的线程去让它来完成。除了这种方式以外,我们还可以使用一种更好的方式――使用线程池中的线程来完成。我们可以使用BeginRead()、BeginWrite()等异步方法,同时让这BeginRead()方法和它的回调方法形成一个类似于while的无限循环:首先在第一层循环中,接收到一个客户端后,调用BeginRead(),然后为该方法提供一个读取完成后的回调方法,然后在回调方法中对收到的字符进行处理,随后在回调方法中接着调用BeginRead()方法,并传入回调方法本身。

由于程序实现功能和上一篇完全相同,我就不再细述了。而关于异步调用方法更多详细内容,可以参见 C#中的委托和事件(续)。

1.服务端的实现

当程序越来越复杂的时候,就需要越来越高的抽象,所以从现在起我们不再把所有的代码全部都扔进Main()里,这次我创建了一个RemoteClient类,它对于服务端获取到的TcpClient进行了一个包装:

上一页  1 2 3 4 5 6 7 8  下一页

Tags:网络编程 异步 传输

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接