欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C#中TCP通信的實現(xiàn)示例

 更新時間:2024年11月22日 09:24:14   作者:挖石油的問天  
本文介紹了C#中TCP通信的實現(xiàn)示例,包括服務(wù)端和客戶端的角色,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

1.TCP通信的示例代碼

TCP通信過程中將通信的雙方分為服務(wù)端和客戶端,TCP通信的客戶端和服務(wù)端的主要區(qū)別在于它們的角色和行為:

服務(wù)端:

  • 負責監(jiān)聽特定的端口和IP地址。
  • 等待客戶端的連接請求。
  • 接受連接后,可以與客戶端進行數(shù)據(jù)交換。

客戶端:

  • 發(fā)起連接請求。
  • 連接到服務(wù)端后,進行數(shù)據(jù)交換。

服務(wù)端代碼示例:

using System;
using System.Net;
using System.Net.Sockets;
using System.Text;

class TcpServer
{
    static void Main()
    {
        // 創(chuàng)建TCP監(jiān)聽器
        TcpListener server = new TcpListener(IPAddress.Any, 12345);
        
        // 啟動監(jiān)聽
        server.Start();
        Console.WriteLine("服務(wù)器正在監(jiān)聽端口 12345...");

        // 接受客戶端連接
        TcpClient client = server.AcceptTcpClient();
        Console.WriteLine("客戶端連接成功!");

        // 獲取網(wǎng)絡(luò)流
        NetworkStream stream = client.GetStream();

        // 讀取客戶端發(fā)送的數(shù)據(jù)
        byte[] buffer = new byte[256];
        int bytesRead;

        while ((bytesRead = stream.Read(buffer, 0, buffer.Length)) != 0)
        {
            string message = Encoding.UTF8.GetString(buffer, 0, bytesRead);
            Console.WriteLine("收到消息: " + message);

            // 向客戶端發(fā)送回復消息
            byte[] response = Encoding.UTF8.GetBytes("服務(wù)器已收到消息");
            stream.Write(response, 0, response.Length);
        }

        // 關(guān)閉連接
        client.Close();
        server.Stop();
    }
}

客戶端代碼示例:

using System;
using System.Net;
using System.Net.Sockets;
using System.Text;

class TcpClientExample
{
    static void Main()
    {
        // 創(chuàng)建TCP客戶端
        TcpClient client = new TcpClient();
        
        // 連接到服務(wù)端(localhost:12345)
        client.Connect("127.0.0.1", 12345);
        Console.WriteLine("已連接到服務(wù)器");

        // 獲取網(wǎng)絡(luò)流
        NetworkStream stream = client.GetStream();

        // 發(fā)送消息到服務(wù)端
        string message = "你好,服務(wù)器!";
        byte[] buffer = Encoding.UTF8.GetBytes(message);
        stream.Write(buffer, 0, buffer.Length);
        Console.WriteLine("已發(fā)送消息: " + message);

        // 接收服務(wù)端的回復
        buffer = new byte[256];
        int bytesRead = stream.Read(buffer, 0, buffer.Length);
        string response = Encoding.UTF8.GetString(buffer, 0, bytesRead);
        Console.WriteLine("收到回復: " + response);

        // 關(guān)閉連接
        client.Close();
    }
}

實驗結(jié)果:

2.上位機與儀器建立連接時的角色選擇

在上位機(Host Computer)和下位機(通常是嵌入式設(shè)備或硬件設(shè)備)通信的場景中,通常上位機程序是指與硬件進行通信的客戶端程序。根據(jù)這個角色,通常上位機程序會被構(gòu)建為客戶端。

為什么上位機程序通常作為客戶端構(gòu)建:

1.主動發(fā)起連接: 上位機程序通常會主動發(fā)起與下位機設(shè)備的連接,發(fā)送請求,讀取設(shè)備狀態(tài)或控制設(shè)備工作。相比之下,下位機設(shè)備通常只是等待來自上位機的連接請求,因此它們的角色通常是服務(wù)器。

2.監(jiān)控與控制: 上位機一般負責監(jiān)控多個下位機設(shè)備,獲取數(shù)據(jù),發(fā)出控制指令,或者對設(shè)備進行配置和調(diào)整。它們通常是用戶操作的地方。

3.功能需求: 上位機程序通常需要提供豐富的用戶界面(UI)、數(shù)據(jù)處理能力、報告生成和數(shù)據(jù)存儲等功能。這些功能要求它作為客戶端與服務(wù)器(即下位機)進行通信,進行數(shù)據(jù)收發(fā)。

到此這篇關(guān)于C#中TCP通信的實現(xiàn)示例的文章就介紹到這了,更多相關(guān)C# TCP通信內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C#之Expression表達式樹實例

    C#之Expression表達式樹實例

    這篇文章主要介紹了C#之Expression表達式樹,包括了表達式樹的原理與用法技巧,需要的朋友可以參考下
    2014-10-10
  • c# 類型轉(zhuǎn)換

    c# 類型轉(zhuǎn)換

    CLR最重要的特性之一就是類型安全性。在運行時,CLR總是知道一個對象是什么類型。調(diào)用GetType方法可以返回類型
    2012-10-10
  • C#反射(Reflection)詳解

    C#反射(Reflection)詳解

    本文詳細講解了C#中的反射(Reflection),文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-04-04
  • Unity3D實現(xiàn)分頁系統(tǒng)

    Unity3D實現(xiàn)分頁系統(tǒng)

    這篇文章主要為大家詳細介紹了Unity3D實現(xiàn)分頁系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-04-04
  • c# 實現(xiàn)網(wǎng)頁加載后將頁面截取為長圖片

    c# 實現(xiàn)網(wǎng)頁加載后將頁面截取為長圖片

    這篇文章主要介紹了c# 實現(xiàn)網(wǎng)頁加載后將頁面截取為長圖片的方法,幫助大家更好的理解和學習c#,感興趣的朋友可以了解下
    2021-01-01
  • 基于WPF實現(xiàn)PDF的顯示與轉(zhuǎn)換

    基于WPF實現(xiàn)PDF的顯示與轉(zhuǎn)換

    這篇文章為大家詳細主要介紹了如何基于WPF實現(xiàn)PDF的顯示并轉(zhuǎn)換成圖片,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下
    2023-12-12
  • C/C++ 傳遞動態(tài)內(nèi)存的深入理解

    C/C++ 傳遞動態(tài)內(nèi)存的深入理解

    本篇文章是對C/C++中的傳遞動態(tài)內(nèi)存進行了詳細的分析介紹,需要的朋友參考下
    2013-05-05
  • C#結(jié)合SMTP實現(xiàn)郵件報警通知的實現(xiàn)示例

    C#結(jié)合SMTP實現(xiàn)郵件報警通知的實現(xiàn)示例

    這篇文章主要介紹了C#結(jié)合SMTP實現(xiàn)郵件報警通知的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-07-07
  • Unity 如何獲取鼠標停留位置下的物體

    Unity 如何獲取鼠標停留位置下的物體

    這篇文章主要介紹了Unity 如何獲取鼠標停留位置下的物體,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-04-04
  • C#?SQLite庫使用技巧

    C#?SQLite庫使用技巧

    SQLite是一個開源、免費的小型RDBMS(關(guān)系型數(shù)據(jù)庫),能獨立運行、無服務(wù)器、零配置、支持事物,用C實現(xiàn),內(nèi)存占用較小,支持絕大數(shù)的SQL92標準。下面跟隨小編一起看下C#?SQLite庫使用
    2022-01-01

最新評論