TCP基礎編程的一般步驟

Server端:

  • 聲明IP、Port、TcpListener、TcpClient、NetworkStream等;
  • 初始化各個字段;
  • 創建TcpListener對象,Start指定的Port監聽:
TcpListener tcpListener=new TcpListener(IP,Port);
tcpListener.Start();
  • 創建Thread,循環調用AcceptTcpClient方法接受Client的連接請求,從AcceptTcpClient返回的結果中得到與該Client對應的TcpClient對象,利用該對象的GetStream方法得到netWorkStream對象及BinaryReader和BinaryWrite對象;
Thread threadAccept=new Thread(AcceptTcpClientConnect);
threadAccept.Start();
private void AcceptTcpClientConnect()
    {
        while(true)
        {
            try
            {
                tcpClient=tcpListener.AcceptTcpClient();
                if(tcpClient!=null)
                {
                    ...
                    netWorkStream=tcpClient.GetStream();
                    br=new BinaryReader(netWorkStream);
                    bw=new BinaryWriter(netWorkStream);
                }
            }
            catch
            {
                ...
            }
        }   
    }
  • 每得到一個新的tcpClient對象,就創建一個對應的thread,在thread中與Client進行通信;
  • 斷開連接,關閉監聽:
tcpListener.Stop();

Client端:

  • 利用TcpClient的構造函數創建一個TcpClient對象:
private TcpClient tcpClient=new TcpClient();
  • 使用Connect方法與服務器建立連接:
tcpClient.Connect(remoteHostName,int.Parse(__txtPort.text));
  • 利用TcpClient的GetStream獲得網絡流,利用該網絡流與服務器進行數據傳輸:
if(tcpClient!=null)
{
    netWorkStream=tcpClient.GetStream();
    br=new BinaryReader(netWorkStream);
    bw=new BinaryWriter(netWorkStream);
}
  • 創建一個線程監聽制定的端口,循環接受並處理服務器發送過來的消息:
Thread threadReceive=new Thread(ReceiveMessage);
threadReceive.Start();
private void ReceiveMessage()
{
    while(true)
    {
        try
        {
            string receiveMessage=br.ReadString();//從流中讀取對象
            if(receiveMessage!=null)
            {
                __txtShowMessage.Invoke(showMessage,receiveMessage)
            }
        }
        catch
        {
            break;
        }
    }
}

20150305

發佈了35 篇原創文章 · 獲贊 12 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章