用Reactive Extensions实现一个简单的EchoServer
2011-04-11 20:22
183 查看
在昨天的随笔Reactive Extensions学习里,我写了个简单的stream异步读操作的扩展封装。今天我用它来实现了一个简单的EchoServer:
//一个简单的异步echo server
static void Main(string[] args)
{
var listener = new TcpListener(new IPEndPoint(IPAddress.Loopback, 3000));
listener.Start();
while (true)
{
var client = listener.AcceptTcpClient();
var stream = client.GetStream();
var writer = new StreamWriter(stream) { AutoFlush = true };
var buffer = new byte[1024];
stream.ReadLinesAsync(buffer)
.Select(line => ">>> " + line)
.Finally(client.Close)
.Subscribe(writer.WriteLine);
}
}
代码非常精简,比起以前的异步架构来说精简了不少。后续有时间的话再尝试用它重写一下以前的MSN客户端看看效果怎么样。
//一个简单的异步echo server
static void Main(string[] args)
{
var listener = new TcpListener(new IPEndPoint(IPAddress.Loopback, 3000));
listener.Start();
while (true)
{
var client = listener.AcceptTcpClient();
var stream = client.GetStream();
var writer = new StreamWriter(stream) { AutoFlush = true };
var buffer = new byte[1024];
stream.ReadLinesAsync(buffer)
.Select(line => ">>> " + line)
.Finally(client.Close)
.Subscribe(writer.WriteLine);
}
}
代码非常精简,比起以前的异步架构来说精简了不少。后续有时间的话再尝试用它重写一下以前的MSN客户端看看效果怎么样。
相关文章推荐
- 用AsyncCtp实现一个简单的EchoServer
- 一个简单的Linux内核模块实现
- nodejs初探(三)实现一个简单的socket交互
- 如何在ns2中实现一个简单的网络协议
- 一个简单地MVVM模式实现,直接上码
- 用JDBC实现简单的数据库查询的一个例子
- 一个简单的Android富文本TextView实现
- 实现一个简单的服务端推送方案
- Java实现一个简单的加密解密方法
- javascript - 简单实现一个图片延迟加载的jQuery插件
- 关于“多线程断点续传下载”功能的一个简单实现和讲解
- 一个简单的留言板的实现
- 由最简单的一个例子说起,匿名用户可读可写的实现(LINUX)配置
- 快速实现一个简单的bigpipe模型
- 实现一个简单的Javascript级联下拉菜单
- 使用HTML5简单实现一个JQuery
- 一个简单的jsp+servlet实例,实现简单的登录
- 用java编写一个简单的字符串加密解密程序,将字符串分成若干行,实现字符串以一列一列读取,并还原之前输入的字符串。这里实现4行输出。
- 一个简单的nodeJS实现
- 一个较简单的js实现checkbox的全选与全不选功能