成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

C# 中的超簡單 TCP 通訊包:一步步帶你玩轉

網絡 網絡管理
通過以上的步驟,你已經成功實現了一個簡單的 TCP 通訊包。服務器會監聽一個端口,等待客戶端的連接,并在接收到消息后返回響應。客戶端會連接到服務器,發送消息,并接收服務器的響應。

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

一、準備工作

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

二、創建服務器

首先,我們來實現一個簡單的 TCP 服務器。這個服務器會監聽一個特定的端口,等待客戶端的連接,并在接收到消息后返回一條響應。

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

        // 創建TCP監聽器
        TcpListener listener = new TcpListener(ipAddress, port);

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

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

                // 獲取網絡流
                NetworkStream stream = client.GetStream();

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

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

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

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

三、創建客戶端

接下來,我們來實現一個簡單的 TCP 客戶端。這個客戶端會連接到服務器,發送一條消息,并接收服務器的響應。

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

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

            // 獲取網絡流
            NetworkStream stream = client.GetStream();

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

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

            // 關閉連接
            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();
    }
}

四、運行測試

現在,你已經完成了服務器和客戶端的代碼。接下來,咱們來運行一下,看看效果。

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

五、總結

通過以上的步驟,你已經成功實現了一個簡單的 TCP 通訊包。服務器會監聽一個端口,等待客戶端的連接,并在接收到消息后返回響應。客戶端會連接到服務器,發送消息,并接收服務器的響應。

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

責任編輯:武曉燕 來源: 程序員編程日記
相關推薦

2017-01-19 21:08:33

iOS路由構建

2024-11-18 17:12:18

C#編程.NET

2009-04-15 09:29:07

2019-03-05 14:09:27

Docker存儲容器

2019-07-09 15:23:22

Docker存儲驅動

2010-08-12 10:02:16

路由器NAT

2018-12-24 10:04:06

Docker存儲驅動

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操作系統寄存器

2024-09-30 09:56:59

2021-10-29 23:00:47

Windows 11Windows微軟

2021-09-06 11:50:45

Windows 11Windows微軟

2011-05-10 10:28:55

2018-04-23 14:23:12

2018-06-11 15:30:12

2018-07-13 15:36:52

2024-08-06 09:29:54

程序機器指令字符串

2020-12-24 11:19:55

JavaMapHashMap
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 男女下面一进一出网站 | 亚洲一区二区在线播放 | 国产电影一区二区 | 国产精品精品视频一区二区三区 | 免费看黄视频网站 | 一区二区在线不卡 | 亚洲97 | 国产精品一区二区在线播放 | 欧美日韩在线综合 | 日韩高清国产一区在线 | 男女羞羞免费视频 | 日本午夜在线视频 | 国产精品久久久久久一级毛片 | 国产成人免费视频网站视频社区 | 久久久www成人免费精品 | 天堂久久一区 | 国产一区| 亚洲第1页| 一区二区福利视频 | 国产精品日韩欧美一区二区三区 | 久久国产精品网站 | 国产亚洲精品久久久久动 | 欧美九九 | 色婷婷国产精品综合在线观看 | 精品视频www | 亚洲精品日韩一区二区电影 | 天天草天天射 | 国产中文视频 | 亚洲精品视频导航 | 亚洲精品电影网在线观看 | 国产精品国产三级国产a | 337p日本欧洲亚洲大胆 | 久久福利网站 | 青青久在线视频 | 国产第一区二区 | 成人福利在线 | 久久aⅴ乱码一区二区三区 亚洲国产成人精品久久久国产成人一区 | 久久国产成人 | 欧美精品v国产精品v日韩精品 | 久久中文高清 | 成人在线观看免费 |