自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

C# 中的超簡單 TCP 通訊包:一步步帶你玩轉(zhuǎn)

網(wǎng)絡(luò) 網(wǎng)絡(luò)管理
通過以上的步驟,你已經(jīng)成功實現(xiàn)了一個簡單的 TCP 通訊包。服務(wù)器會監(jiān)聽一個端口,等待客戶端的連接,并在接收到消息后返回響應(yīng)??蛻舳藭B接到服務(wù)器,發(fā)送消息,并接收服務(wù)器的響應(yīng)。

嘿,各位開發(fā)者朋友們!今天咱們來聊聊 C# 中的 TCP 通訊。TCP(Transmission Control Protocol,傳輸控制協(xié)議)是一種面向連接的、可靠的、基于字節(jié)流的傳輸層通信協(xié)議。在很多應(yīng)用場景中,我們需要通過 TCP 來實現(xiàn)客戶端和服務(wù)器之間的數(shù)據(jù)傳輸。別擔心,即使你是 TCP 通訊的新手,我也會用最簡單、最口語化的方式,帶你一步步實現(xiàn)一個基本的 TCP 通訊包。

一、準備工作

在開始之前,請確保你的開發(fā)環(huán)境已經(jīng)安裝好了 Visual Studio(或其他支持 C# 的 IDE),并且已經(jīng)創(chuàng)建了一個新的 C# 控制臺項目。

二、創(chuàng)建服務(wù)器

首先,我們來實現(xiàn)一個簡單的 TCP 服務(wù)器。這個服務(wù)器會監(jiān)聽一個特定的端口,等待客戶端的連接,并在接收到消息后返回一條響應(yīng)。

  • 添加必要的命名空間在你的服務(wù)器代碼文件的頂部,添加以下命名空間:
using System;
using System.Net;
using System.Net.Sockets;
using System.Text;
  • 實現(xiàn)服務(wù)器邏輯接下來,我們在 Main 方法中編寫服務(wù)器的代碼:
class Program
{
    static void Main(string[] args)
    {
        // 定義一個IP地址和端口號
        IPAddress ipAddress = IPAddress.Parse("127.0.0.1");
        int port = 11000;

        // 創(chuàng)建TCP監(jiān)聽器
        TcpListener listener = new TcpListener(ipAddress, port);

        try
        {
            // 啟動監(jiān)聽
            listener.Start();
            Console.WriteLine("服務(wù)器已啟動,等待連接...");

            while (true)
            {
                // 接受客戶端連接
                TcpClient client = listener.AcceptTcpClient();
                Console.WriteLine("客戶端已連接!");

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

                // 讀取客戶端發(fā)送的數(shù)據(jù)
                byte[] buffer = new byte[256];
                int bytesRead = stream.Read(buffer, 0, buffer.Length);
                string receivedData = Encoding.ASCII.GetString(buffer, 0, bytesRead);
                Console.WriteLine($"收到消息: {receivedData}");

                // 發(fā)送響應(yīng)消息
                byte[] response = Encoding.ASCII.GetBytes("消息已收到!");
                stream.Write(response, 0, response.Length);

                // 關(guān)閉連接
                client.Close();
            }
        }
        catch (SocketException e)
        {
            Console.WriteLine($"SocketException: {e}");
        }
        finally
        {
            // 停止監(jiān)聽
            listener.Stop();
        }

        Console.WriteLine("\n按任意鍵退出...");
        Console.ReadKey();
    }
}

三、創(chuàng)建客戶端

接下來,我們來實現(xiàn)一個簡單的 TCP 客戶端。這個客戶端會連接到服務(wù)器,發(fā)送一條消息,并接收服務(wù)器的響應(yīng)。

  • 添加必要的命名空間在你的客戶端代碼文件的頂部,添加以下命名空間:
using System;
using System.Net.Sockets;
using System.Text;
  • 實現(xiàn)客戶端邏輯接下來,我們在 Main 方法中編寫客戶端的代碼:
class Program
{
    static void Main(string[] args)
    {
        // 定義一個服務(wù)器IP地址和端口號
        string server = "127.0.0.1";
        int port = 11000;

        try
        {
            // 創(chuàng)建TCP客戶端
            TcpClient client = new TcpClient(server, port);
            Console.WriteLine("已連接到服務(wù)器!");

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

            // 發(fā)送消息到服務(wù)器
            string message = "你好,服務(wù)器!";
            byte[] data = Encoding.ASCII.GetBytes(message);
            stream.Write(data, 0, data.Length);
            Console.WriteLine($"發(fā)送消息: {message}");

            // 接收服務(wù)器的響應(yīng)
            byte[] buffer = new byte[256];
            int bytesRead = stream.Read(buffer, 0, buffer.Length);
            string responseData = Encoding.ASCII.GetString(buffer, 0, bytesRead);
            Console.WriteLine($"收到響應(yīng): {responseData}");

            // 關(guān)閉連接
            stream.Close();
            client.Close();
        }
        catch (ArgumentNullException e)
        {
            Console.WriteLine($"ArgumentNullException: {e.Message}");
        }
        catch (SocketException e)
        {
            Console.WriteLine($"SocketException: {e.Message}");
        }

        Console.WriteLine("\n按任意鍵退出...");
        Console.ReadKey();
    }
}

四、運行測試

現(xiàn)在,你已經(jīng)完成了服務(wù)器和客戶端的代碼。接下來,咱們來運行一下,看看效果。

  • 運行服務(wù)器首先,運行你的服務(wù)器代碼。你會看到控制臺輸出“服務(wù)器已啟動,等待連接...”。
  • 運行客戶端然后,運行你的客戶端代碼。你會看到控制臺輸出“已連接到服務(wù)器!”,發(fā)送的消息,以及從服務(wù)器接收到的響應(yīng)。
  • 觀察結(jié)果在服務(wù)器端,你會看到控制臺輸出“客戶端已連接!”和“收到消息: 你好,服務(wù)器!”。

五、總結(jié)

通過以上的步驟,你已經(jīng)成功實現(xiàn)了一個簡單的 TCP 通訊包。服務(wù)器會監(jiān)聽一個端口,等待客戶端的連接,并在接收到消息后返回響應(yīng)??蛻舳藭B接到服務(wù)器,發(fā)送消息,并接收服務(wù)器的響應(yīng)。

這只是一個基本的實現(xiàn),你可以在此基礎(chǔ)上進行擴展和優(yōu)化,比如增加多線程支持、異常處理、數(shù)據(jù)格式處理等。希望這篇文章對你有所幫助,祝你編程愉快!

責任編輯:武曉燕 來源: 程序員編程日記
相關(guān)推薦

2017-01-19 21:08:33

iOS路由構(gòu)建

2024-11-18 17:12:18

C#編程.NET

2009-04-15 09:29:07

2010-08-12 10:02:16

路由器NAT

2019-03-05 14:09:27

Docker存儲容器

2019-07-09 15:23:22

Docker存儲驅(qū)動

2018-12-24 10:04:06

Docker存儲驅(qū)動

2010-03-04 16:28:17

Android核心代碼

2016-11-02 18:54:01

javascript

2017-12-25 11:50:57

LinuxArch Linux

2024-08-30 08:30:29

CPU操作系統(tǒng)寄存器

2024-09-30 09:56:59

2021-09-06 11:50:45

Windows 11Windows微軟

2021-10-29 23:00:47

Windows 11Windows微軟

2011-05-10 10:28:55

2018-07-13 15:36:52

2020-12-24 11:19:55

JavaMapHashMap

2018-06-11 15:30:12

2024-08-06 09:29:54

程序機器指令字符串

2018-04-23 14:23:12

點贊
收藏

51CTO技術(shù)棧公眾號