您的位置:首页 > 其它

懒人服务器 - 教程三、了解如何应用(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事件中断开与服务器的连接。

客户端例子的完整代码如下:

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 这对关键字非常神奇,

它让所有异步操作的代码,写起来就跟写同步操作的代码一样,

具有便于阅读和理解的连贯性,但同时又不会在执行过程中形成阻塞。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: