淺析C#中的套接字編程(4) | |||
作者: 王凱明 www.ASPCool.com 時間:2002-4-10 21:23:16 | |||
1. 打開VS.net,新建一個C#的模板爲“Windows 應用程序”的項目,不妨命名爲“ChatClient”。 2. 佈置界面。往界面上添加一個ListBox控件(用於顯示用戶列表),一個RichTextBox控件(用於顯示聊天消息以及系統消息),一個TextBox控件(用於發送消息),一個CheckBox控件(確定是否爲悄悄話),一個StatusBar控件以及四個Button控件(分別爲“連接”、“斷開連接”、“開始記錄”、“發送”)。各個控件的屬性設置可以參見源代碼中的具體設置,這裏從略。界面設計好後的圖象如下: 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); } } |
淺析C#中的套接字編程(4)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.