C#GJBC-32.4.2TcpClient示例
原创
©著作权归作者所有:来自51CTO博客作者mb630ec035bcfe8的原创作品,请联系作者获取转载授权,否则将追究法律责任
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
现在继续向服务器中添加服务功能。程序已经在运行,还需要添加什么呢?通常,在系统启动时,不需要任何人登录系统,服务器程序就应该自动地打开,我们希望使用服务控制程序对此进行控制。