最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解C#如何利用TcpListener和TcpClient實現(xiàn)Tcp通訊

 更新時間:2023年12月25日 10:06:00   作者:rjcql  
TcpListener 和 TcpClient 是在 System.Net.Sockets.Socket 類的基礎上做的進一步封裝,使用 GetStream 方法返回網(wǎng)絡流,下面我們就來詳細一下如何使用TcpListener和TcpClient實現(xiàn)Tcp通訊吧

寫在前面

TcpListener 和 TcpClient 是在 System.Net.Sockets.Socket 類的基礎上做的進一步封裝,使用 GetStream 方法返回網(wǎng)絡流,由于是以流的方式讀取數(shù)據(jù),所以在使用過程中更容易有粘包和分包的問題,還不如直接使用Socket類來的方便。

代碼實現(xiàn)

服務端代碼

    static void TcpListenerTest()
    {
        Console.WriteLine("TcpListener Server");
        var tcpListener = new TcpListener(IPAddress.Parse("127.0.0.1"), 9090);
        tcpListener.Start();
        Console.WriteLine("TcpListener Start");
        var task = Task.Run(() =>
        {
            while (true)
            {
                var tcpClient = tcpListener.AcceptTcpClient();
                var buffer = new byte[tcpClient.ReceiveBufferSize];
                var stream = tcpClient.GetStream();
                stream.Read(buffer, 0, buffer.Length);
                stream.Close();
                tcpClient.Close();
                var receivedMsg = string.Empty;
                receivedMsg += Encoding.UTF8.GetString(buffer).Trim('\0');
                Console.WriteLine("收到消息:" + receivedMsg);
 
                // 服務端心跳間隔
                Thread.Sleep(1000);
            }
        });
 
        Console.ReadLine();
    }

客戶端代碼

    static void TcpClientTest()
    {
        Console.WriteLine("TcpClient");
 
        var msg = "這是來自客戶端的消息111";
        var client = new TcpClient("127.0.0.1", 9090);
        var sendStream = client.GetStream();
        var sendBytes = Encoding.Default.GetBytes(msg);
        sendStream.Write(sendBytes, 0, sendBytes.Length);
        sendStream.Flush();
        sendStream.Close();//關閉網(wǎng)絡流  
        client.Close();//關閉客戶端  
 
        Console.WriteLine(msg);
 
        Console.ReadLine();
    }

執(zhí)行結(jié)果

到此這篇關于詳解C#如何利用TcpListener和TcpClient實現(xiàn)Tcp通訊的文章就介紹到這了,更多相關C# Tcp通訊內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • unity中點擊某一個按鈕播放某一個動作的操作

    unity中點擊某一個按鈕播放某一個動作的操作

    這篇文章主要介紹了unity中點擊某一個按鈕播放某一個動作的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-04-04
  • C# 讀取數(shù)據(jù)庫表結(jié)構工具設計與實現(xiàn)思路

    C# 讀取數(shù)據(jù)庫表結(jié)構工具設計與實現(xiàn)思路

    本文介紹了基于C#和ADO.NET的數(shù)據(jù)庫表結(jié)構讀取工具,并詳細闡述了實現(xiàn)步驟、關鍵技術點及擴展功能,該工具具備低侵入性和高擴展性,適用于開發(fā)調(diào)試、數(shù)據(jù)庫文檔生成等場景,感興趣的朋友跟隨小編一起看看吧
    2026-04-04
  • C# Winform實現(xiàn)圓角無鋸齒按鈕

    C# Winform實現(xiàn)圓角無鋸齒按鈕

    這篇文章主要為大家詳細介紹了C# Winform實現(xiàn)圓角無鋸齒按鈕,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-07-07
  • c#實現(xiàn)一個超實用的證件照換底色小工具(附源碼)

    c#實現(xiàn)一個超實用的證件照換底色小工具(附源碼)

    這篇文章主要給大家介紹了關于利用c#實現(xiàn)一個超實用的證件照換底色小工具的相關資料,通過這個小工具大家可以很方便的進行底色的切換,不用再因為底色的原因頭疼了,需要的朋友可以參考借鑒,下面來一起學習學習吧。
    2018-01-01
  • LZW壓縮算法 C#源碼

    LZW壓縮算法 C#源碼

    本文分享了一個LZW壓縮算法的C#源碼,有需要的朋友可以參考一下。
    2016-06-06
  • C# 中AutoMapper的使用方法

    C# 中AutoMapper的使用方法

    這篇文章主要介紹了C# 中AutoMapper的使用方法,幫助大家更好的理解和使用c#,感興趣的朋友可以了解下
    2020-12-12
  • C# 使用Dapper與金倉數(shù)據(jù)庫交互的實現(xiàn)步驟

    C# 使用Dapper與金倉數(shù)據(jù)庫交互的實現(xiàn)步驟

    本文主要介紹了C# 使用 Dapper 與金倉數(shù)據(jù)庫交互,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2025-12-12
  • 淺談C#9.0新特性之參數(shù)非空檢查簡化

    淺談C#9.0新特性之參數(shù)非空檢查簡化

    這篇文章主要介紹了淺談C#9.0新特性之參數(shù)非空檢查簡化,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-06-06
  • C#借助Spire.Doc for .NET實現(xiàn)調(diào)整Word文檔頁眉和頁腳的高度

    C#借助Spire.Doc for .NET實現(xiàn)調(diào)整Word文檔頁眉和頁腳的高度

    在 Microsoft Word 文檔中手動調(diào)整頁眉和頁腳高度往往令人頭疼,本文將介紹一種使用 Spire.Doc for .NET 在 C# 中精確調(diào)整 Word 頁眉和頁腳高度的解決方案,有需要的小伙伴可以了解下
    2026-03-03
  • C#中dynamic關鍵字的正確用法(推薦)

    C#中dynamic關鍵字的正確用法(推薦)

    dynamic的出現(xiàn)讓C#具有了弱語言類型的特性。dynamic是FrameWork4.0的新特性。這篇文章主要介紹了C#中dynamic關鍵字的正確用法(推薦)的相關資料,需要的朋友可以參考下
    2016-11-11

最新評論

大同市| 阳信县| 津市市| 五莲县| 石泉县| 巴东县| 历史| 名山县| 瓦房店市| 濮阳县| 南郑县| 伊川县| 丰镇市| 五常市| 临桂县| 富民县| 那坡县| 宝兴县| 荔浦县| 应城市| 凤翔县| 都江堰市| 潼关县| 九寨沟县| 定边县| 来宾市| 丰县| 临潭县| 鄂托克前旗| 湖南省| 武城县| 徐水县| 基隆市| 浏阳市| 武强县| 商丘市| 伊宁县| 高唐县| 仲巴县| 东兴市| 德惠市|