淺析C#中的套接字編程(4)

淺析C#中的套接字編程(4)
作者: 王凱明   www.ASPCool.com 時間:2002-4-10 21:23:16  

     客戶端程序:
  
  
  1. 打開VS.net,新建一個C#的模板爲“Windows 應用程序”的項目,不妨命名爲“ChatClient”。
  
  
  2. 佈置界面。往界面上添加一個ListBox控件(用於顯示用戶列表),一個RichTextBox控件(用於顯示聊天消息以及系統消息),一個TextBox控件(用於發送消息),一個CheckBox控件(確定是否爲悄悄話),一個StatusBar控件以及四個Button控件(分別爲“連接”、“斷開連接”、“開始記錄”、“發送”)。各個控件的屬性設置可以參見源代碼中的具體設置,這裏從略。界面設計好後的圖象如下:
  
  200204011543470103.gif
  
  3. 客戶端程序的代碼編寫。
  
  
  當客戶端試圖和服務器端進行連接時,一個連接必須建立而且得向服務器端進行註冊。EstablishConnection()函數運用一個TcpClient來和服務器端取得連接,同時創建一個NetworkStream來發送消息。還有,端口號和服務器端的是保持一致的,均爲5555。EstablishConnection()函數如下:
  
  
  private void EstablishConnection()
  
  
  {
  
  
  statusBar1.Text = "正在連接到服務器";
  
  
  try
  
  
  {
  
  
  clientsocket = new TcpClient(serveraddress,serverport);
  
  
  ns = clientsocket.GetStream();
  
  
  sr = new StreamReader(ns);
  
  
  connected = true;
  
  
  }
  
  
  catch (Exception)
  
  
  {
  
  
  MessageBox.Show("不能連接到服務器!","錯誤",
  
  
  MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
  
  
  statusBar1.Text = "已斷開連接";
  
  
  }
  
  
  }
  
  
  在和服務器端連接成功後,程序就用RegisterWithServer()函數向服務器端發送一個CONN命令。該命令先是發送該用戶的名稱,然後從服務器端獲得其他所有用戶的列表,所有用戶列表是在ListBox控件中顯示的。該函數如下:
  
  
  private void RegisterWithServer()
  
  
  {
  
  
  try
  
  
  {
  
  
  string command = "CONN|" + ChatOut.Text;
  
  
  Byte[] outbytes = System.Text.Encoding.ASCII.GetBytes(command.ToCharArray());
  
  
  ns.Write(outbytes,0,outbytes.Length);
  
  
  
  
  string serverresponse = sr.ReadLine();
  
  
  serverresponse.Trim();
  
  
  string[] tokens = serverresponse.Split(new Char[]{'|'});
  
  
  if(tokens[0] == "LIST")
  
  
  {
  
  
  statusBar1.Text = "已連接";
  
  
  btnDisconnect.Enabled = true;
  
  
  }
  
  
  for(int n=1; n
  
  
  lbChatters.Items.Add(tokens[n].Trim(new char[]{'/r','/n'}));
  
  
  this.Text = clientname + ":已連接到服務器";
  
  
  
  
  }
  
  
  catch (Exception)
  
  
  {
  
  
  MessageBox.Show("註冊時發生錯誤!","錯誤",
  
  
  MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
  
  
  }
  
  
  }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章