基於多線程的TCP服務器項目【開源】

本文提供一個完整的TCP Server實例,包括動態鏈接庫、單元測試、驗收測試、Winform模擬測試。供新手學習,還望老手多提意見。服務器

項目地址:https://tcpserversocket.codeplex.com/ (可直接Download項目工程)網絡

系統結構

項目文件以下:socket

TcpServerSocket:項目核心動態連接庫,若是在別的項目中使用,只用引用該項目生成的DLL便可;tcp

WindowsFormsApplication1:一個簡單的winform應用程序,讓你快事瞭解如何在WinForm中使用;單元測試

UnitTestProject:單元測試;學習

AcceptanceTest:驗收測試,模擬高速鏈接斷開的客戶端,快速數據發送。測試

 

項目的核心是使用TcpListener進行監聽,使用NetworkStream進行TCP數據流讀寫。服務器的核心原理以下圖:spa

 

  

系統測試

WindowsFormsApplication1 + 網絡調試助手測試效果:3d

 WindowsFormsApplication1 + AcceptanceTest效果:調試

 

如何使用

能夠在你的項目中添加生成的TcpServerSocket.dll,而後簡單幾句代碼就能夠開啓TCP Server之旅!

 var tcp = new TcpServer
 {
     RecvNewClientAction = handler => Debug.WriteLine("recv new client: " + handler),
     LostClientAction = handler => Debug.WriteLine("lost client :" + handler),
      RecvDataAction = (ip, data, len) => Debug.WriteLine("{0}:{1}", ip, Encoding.ASCII.GetString(data, 0, len)),
     ListenPort = 8080
 };
 tcp.StartListen();


後續開發

程序主要一個問題是處理斷網、客戶端程序忽然崩潰等非正常斷線狀況。原本是想在程序中加心跳處理,但這樣的話就增長了程序的複雜性。但願各位大大們指點迷津!

相關文章
相關標籤/搜索