懒人服务器 - 教程三、了解如何应用(DotNet客户端)
2014-06-04 01:36
218 查看
懒人服务器的客户端开发包是有DotNet版本的,
且支持 DotNet4.0(XP适用)和 DotNet4.5(Win7/Win8/Metro适用);
同时也兼容 Mono,所以可用于跨平台开发(结合Xamarin可用于手机开发)。
DotNet版本与Java版本的客户端开发包,在使用上是非常类似的,
主要也是使用核心类 TcpDataClient 进行连接、发送和断开等操作。
不过在DotNet版本的例子中,我们将会使用WindowsForm作为程序的界面,
因此,在流程安排上会有点不同。
比如说,我们会在WinForm的Load事件中连接服务器;
而在WinForm的FormClosed事件中断开与服务器的连接。
客户端例子的完整代码如下:
在DotNet的客户端例子中,我们要注意的是DotNet的一对关键字 async/await 。
这两个关键字所修饰的函数都是异步执行的。
这表示,TcpDataClient在这里被调用到的函数都是异步执行的。
而实际上,不管是Java版的TcpDataClient还是DotNet版本的TcpDataClient,
它所有与网络相关的函数操作都是异步执行的。
在DotNet里面,async/await 这对关键字非常神奇,
它让所有异步操作的代码,写起来就跟写同步操作的代码一样,
具有便于阅读和理解的连贯性,但同时又不会在执行过程中形成阻塞。
且支持 DotNet4.0(XP适用)和 DotNet4.5(Win7/Win8/Metro适用);
同时也兼容 Mono,所以可用于跨平台开发(结合Xamarin可用于手机开发)。
DotNet版本与Java版本的客户端开发包,在使用上是非常类似的,
主要也是使用核心类 TcpDataClient 进行连接、发送和断开等操作。
不过在DotNet版本的例子中,我们将会使用WindowsForm作为程序的界面,
因此,在流程安排上会有点不同。
比如说,我们会在WinForm的Load事件中连接服务器;
而在WinForm的FormClosed事件中断开与服务器的连接。
客户端例子的完整代码如下:
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using Lazyboots.Network.Common; using Lazyboots.Network.Client; namespace SimpleLazybootsClient { public partial class Form1 : Form { public const int STRING_ACTION = 1002; public const int UPPERCASE_FUNC = 1; public Form1() { InitializeComponent(); // 初始化界面控件的状态 button1.Enabled = false; textBox1.Enabled = false; progressBar1.Visible = false; progressBar1.Style = ProgressBarStyle.Marquee; progressBar1.MarqueeAnimationSpeed = 10; } private async void Form1_Load(object sender, EventArgs e) { // 创建一个 TcpDataClient,用于连接服务器 TcpDataClient client = new TcpDataClient(); // 连接服务器 await client.Connect("127.0.0.1", 9090); if (client.Code == 0) // 如果连接成功,就让按钮可以点击 { button1.Enabled = true; textBox1.Enabled = true; } else label1.Text = client.Message; // 如果连接失败,则显示错误信息 } private async void button1_Click(object sender, EventArgs e) { string str = textBox1.Text; if (str.Length <= 0) return; // 参数中的“STRING_ACTION(1002)”表示“请求字串转换指令”, // 参数中的“UPPERCASE_FUNC(1)”则表示“请求大写转换功能” TcpDataClient client = new TcpDataClient(STRING_ACTION, UPPERCASE_FUNC); // 设置显示进度条 progressBar1.Visible = true; // 获取并显示结果 label1.Text = await client.GetString(str); // 隐藏进度条 progressBar1.Visible = false; } private void Form1_FormClosed(object sender, FormClosedEventArgs e) { // 创建一个 TcpDataClient,用于关闭连接 TcpDataClient client = new TcpDataClient(); // 关闭连接 client.Disconnect(); } } }
在DotNet的客户端例子中,我们要注意的是DotNet的一对关键字 async/await 。
这两个关键字所修饰的函数都是异步执行的。
这表示,TcpDataClient在这里被调用到的函数都是异步执行的。
而实际上,不管是Java版的TcpDataClient还是DotNet版本的TcpDataClient,
它所有与网络相关的函数操作都是异步执行的。
在DotNet里面,async/await 这对关键字非常神奇,
它让所有异步操作的代码,写起来就跟写同步操作的代码一样,
具有便于阅读和理解的连贯性,但同时又不会在执行过程中形成阻塞。
相关文章推荐
- 懒人服务器 - 教程三、了解如何应用(客户端)
- 懒人服务器 - 教程三、了解如何应用(Swing客户端)
- 懒人服务器 - 教程三、了解如何应用(服务器端)
- 懒人服务器 - 教程二、了解配置文件
- 版本管理svn服务器和客户端应用简单快速教程
- python应用系列教程——python使用socket创建tcp服务器和客户端
- python应用系列教程——python使用SocketServer实现网络服务器,socket实现客户端
- [dotNET]使用HttpWebRequest请求远端服务器时如何加载SSL证书
- 用 JSON 处理缓存----了解如何在客户端缓存验证元数据
- 如何在客户端通过MSSQL执行某操作删除服务器的指定文件
- DHCP服务器配置教程(5)设置DHCP客户端
- 如何在客户端避免繁冗的服务器GUID定义及导入?
- Blue框架的基本教程二:客户端调用服务器的方法
- C#中如何获取服务器IP,名称,操作系统,客户端IP,名称!
- 如何返回一个服务器相对路径到客户端的相对路径
- C#中如何获取服务器IP,名称,操作系统,客户端IP,名称!
- ICE专题:在客户端中如何定位服务器(即如何寻找代理)
- 如何在客户端避免繁冗的服务器GUID定义及导入?