天天看點

Visual C#.Net網絡程式開發-Tcp篇(3) 祥細内容:

綜合運用上面的知識,下面的執行個體實作了簡單的網絡通訊-雙機互連,針對用戶端和服務端分别編制了應用程式。用戶端建立到服務端的連接配接,向遠端主機發送連接配接請求連接配接信号,并發送交談内容;遠端主機端接收來自客戶的連接配接,向用戶端發回确認連接配接的信号,同時接收并顯示用戶端的交談内容。在這個基礎上,發揮你的創造力,你完全可以開發出一個基于程式語言(C#)級的聊天室!

  用戶端主要源代碼:

   public void SendMeg()//發送資訊

   {

  try

  {

  int port=Int32.Parse(textBox3.Text.ToString());//遠端主機端口

   try

   tcpClient=new TcpClient(textBox1.Text,port);//建立TcpClient對象執行個體 }

   catch(Exception le)

   MessageBox.Show("TcpClient Error:"+le.Message);

   }

  string strDateLine=DateTime.Now.ToShortDateString()+" "+DateTime.Now.ToLongTimeString();//得到發送時用戶端時間

   netStream=tcpClient.GetStream();//得到網絡流

   sw=new StreamWriter(netStream);//建立TextWriter,向流中寫字元

   string words=textBox4.Text;//待發送的話

   string content=strDateLine+words;//待發送内容

   sw.Write(content);//寫入流

   sw.Close();//關閉流寫入器

   netStream.Close();//關閉網絡流

   tcpClient.Close();//關閉用戶端連接配接

  }

  catch(Exception ex)

   MessageBox.Show("Sending Message Failed!"+ex.Message);

   textBox4.Text="";//清空

  伺服器端主要源代碼:

   public void StartListen()//偵聽特定端口的使用者請求

  //ReceiveMeg();

  isLinked=false; //連接配接标志

   int port=Int32.Parse(textBox1.Text.ToString());//本地待偵聽端口

   serverListener=new TcpListener(port);//建立TcpListener對象執行個體

   serverListener.Start(); //啟動偵聽

   catch(Exception ex)

   MessageBox.Show("Can‘t Start Server"+ex.Message);

   return;

   isLinked=true;

   while(true)//進入無限循環等待使用者端連接配接

   tcpClient=serverListener.AcceptTcpClient();//建立用戶端連接配接對象

   sr=new StreamReader(netStream);//流讀寫器

   catch(Exception re)

   MessageBox.Show(re.Message);

   string buffer="";

  string received="";

   received+=sr.ReadLine();//讀流中一行

   while(received.Length!=0)

   buffer+=received;

   buffer+="\r\n";

   //received="";

   received=sr.ReadLine();

  listBox1.Items.Add(buffer);//顯示

  //關閉

  sr.Close();

  netStream.Close();

  tcpClient.Close();