打開VS2008,在D:C#ch17目錄下建立名為SocketClient的Windows應用程序。打開工程,往當前窗體中添加控件,如表17-7所示。
表17-7 添加控件列表
控件名 Name Text GroupBox groupBox1 向服務器發送消息 Label label1 發送消息: TextBox textBox1 Button button2 發送 ListBox lbInfo GroupBox groupBox1 服務器回饋信息
客戶端的設計主要分為以下步驟。
(1)首先要做的工作還是要引用一些命名空間,如下所示。
using System.IO;
using System.Net.Sockets;
using System.Net;
然後定義一系列的全局變量,如下所示。
private Socket s; //定義Socket對象
public NetworkStream ns; //網絡流
public StreamReader sr; //流讀取
public StreamWriter sw; //流寫入
(2)雙擊“發送”按鈕,添加如下代碼。
s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
serverIP = IPAddress.Parse("222.18.142.171"); //服務器IP
try
{
s.Connect(serverIP, 13); //連接服務器,端口號用13
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
try
{
ns = new NetworkStream(s); //實例化網絡流
sr = new StreamReader(ns); //實例化流讀取對象
sw = new StreamWriter(ns); //實例化寫入流對象
sw.WriteLine(textBox1.Text); //將textBox1.Text的數據寫入流
sw.Flush(); //清理緩沖區
lbInfo.Items.Add(sr.ReadLine()); //將從流中讀取的數據寫入lbInfo
}
catch (Exception ex)
{
MessageBox.Show(ex.Message); //捕獲異常
}
(3)最後,關閉Socket連接,釋放資源,可以直接在窗體的FormClosed事件中進行,如下所示。
s.Shutdown(SocketShutdown.Both);
s.Close();
至此,服務器和客戶端已經全部設計完畢,下面看運行效果。