32.4.2  TcpClient示例


客户端是一个简单的Windows应用程序,可以在此输入服务器的主机名和端口号。客户端应用程序使用TcpClient类连接正在运行的服务器,然后接收返回的消息,并显示在多行文本框中。窗体的底部还有一个状态栏,如图32-5所示。




图   32-5


必须在代码中使用下面的 using 语句:


using System;


using System.Drawing;


using System.Collections;


using System.ComponentModel;


using System.Windows.Forms;


using System.Data;


using System.Net;


using System.Net.Sockets;


using System.Text;


代码的其余部分由 IDE 自动生成,在此就不详细讨论它们了。客户端的主要功能体现在 Get Quote 按钮的单击事件的处理程序中。

protected void buttonQuote_Click (object sender, System.EventArgs e)



{



statusBar.Text = "";



string server = textHostname.Text;



try



{



int port = Convert.ToInt32(textPortNumber.Text);



}



catch (FormatException ex)



{



statusBar.Text = ex.Message;



return;



}



TcpClient client = new TcpClient();



try



{



client.Connect(textHostname.Text,



Convert.ToInt32(textPortNumber.Text));



NetworkStream stream = client.GetStream();



byte[] buffer = new Byte[1024];



int received = stream.Read(buffer, 0, 1024);



if (received <= 0)



{



statusBar.Text = "Read failed";



return;



}



textQuote.Text = Encoding.Unicode.GetString(buffer);



}



catch (SocketException ex)



{



statusBar.Text = ex.Message;



}



finally



{



client.Close();



}



}

在打开测试服务器和这个Windows应用程序客户机之后,就可以对功能进行测试。如果运行成功,就可以得到如图32-6所示的结果。




图   32-6


现在继续向服务器中添加服务功能。程序已经在运行,还需要添加什么呢?通常,在系统启动时,不需要任何人登录系统,服务器程序就应该自动地打开,我们希望使用服务控制程序对此进行控制。