淺析C#中的通訊端編程(2)

來源:互聯網
上載者:User
淺析C#中的通訊端編程(2)
作者: 王凱明   www.ASPCool.com 時間:2002-4-10 21:17:46  

     下面,我就向大傢具體介紹該執行個體:
  
  
  伺服器端程式:
  
  
  1. 開啟VS.net,建立一個C#的模板為“Windows 應用程式”的項目,不妨命名為“ChatServer”。
  
  
  2. 布置介面。只需在介面上添加一個ListBox控制項即可,該控制項主要用於顯示用戶端的使用者的一些資訊的。圖象如下:
  
  
  
  
  3. 伺服器端程式的代碼編寫。
  
  
  對於伺服器端,主要的作用是監聽用戶端的串連請求並確認其請求。程式一開始便開啟一個StartListening()線程。
  
  
  private void StartListening()
  
  
  {
  
  
  listener = new TcpListener(listenport);
  
  
  listener.Start();
  
  
  while (true)
  
  
  {
  
  
  try
  
  
  {
  
  
  Socket s = listener.AcceptSocket();
  
  
  clientsocket = s;
  
  
  clientservice = new Thread(new ThreadStart(ServiceClient));
  
  
  clientservice.Start();
  
  
  }
  
  
  catch(Exception e)
  
  
  {
  
  
  Console.WriteLine(e.ToString() );
  
  
  }
  
  
  }
  
  
  }
  
  
  該線程是一直處於運行狀態的。當伺服器端接收到一個來自用戶端的串連請求後,它就開啟一個ServiceClient()線程來服務用戶端。當一個串連被建立後,每個用戶端就被賦予一個屬於它自己的通訊端。同時,一個Client類的對象被建立。該對象包含了用戶端的一些相關資訊,該資訊被儲存在一個數組列表中。Client類如下(也可參見原始碼中的Client.cs檔案):
  
  
  using System;
  
  
  using System.Threading;
  
  
  
  
  namespace ChatServer
  
  
  {
  
  
  using System.Net.Sockets;
  
  
  using System.Net;
  
  
  
  
  ///
  
  
  /// Client 的摘要說明。
  
  
  ///
  
  
  public class Client
  
  
  {
  
  
  private Thread clthread;
  
  
  private EndPoint endpoint;
  
  
  private string name;
  
  
  private Socket sock;
  
  
  
  
  public Client(string _name, EndPoint _endpoint, Thread _thread, Socket _sock)
  
  
  {
  
  
  // TODO: 在此處添加建構函式邏輯
  
  
  clthread = _thread;
  
  
  endpoint = _endpoint;
  
  
  name = _name;
  
  
  sock = _sock;
  
  
  }
  
  
  
  
  public override string ToString()
  
  
  {
  
  
  return endpoint.ToString()+ " : " + name;
  
  
  }
  
  
  
  
  public Thread CLThread
  
  
  {
  
  
  get{return clthread;}
  
  
  set{clthread = value;}
  
  
  }
  
  
  
  
  public EndPoint Host
  
  
  {
  
  
  get{return endpoint;}
  
  
  set{endpoint = value;}
  
  
  }
  
  
  
  
  public string Name
  
  
  {
  
  
  get{return name;}
  
  
  set{name = value;}
  
  
  }
  
  
  
  
  public Socket Sock
  
  
  {
  
  
  get{return sock;}
  
  
  set{sock = value;}
  
  
  }
  
  
  }
  
  
  }

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.