首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C# 2.0 Socket 程式設計實戰:完整的 TCP 客戶端與伺服器端範例

     編輯:關於C語言

完整的 TCP 通訊範例

本篇展示一個完整的雙向通訊流程:客戶端發送測試字串,伺服器接收並回應確認訊息。

客戶端完整程式碼

// Client 端
using System;
using System.Text;
using System.Net;
using System.Net.Sockets;

namespace SocketSample
{
    class Program
    {
        static void Main()
        {
            try
            {
                int port = 2000;
                string host = "127.0.0.1";
                IPAddress ip = IPAddress.Parse(host);
                IPEndPoint ipe = new IPEndPoint(ip, port);
                
                Socket client = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
                Console.WriteLine("Connecting...");
                client.Connect(ipe);
                
                string sendStr = "hello! This is a socket test";
                byte[] bs = Encoding.ASCII.GetBytes(sendStr);
                Console.WriteLine("Send Message");
                client.Send(bs, bs.Length, 0);
                
                string recvStr = "";
                byte[] recvBytes = new byte[1024];
                int bytes = client.Receive(recvBytes, recvBytes.Length, 0);
                recvStr += Encoding.ASCII.GetString(recvBytes, 0, bytes);
                Console.WriteLine("Client Get Message: {0}", recvStr);
                
                client.Close();
            }
            catch (ArgumentNullException e)
            {
                Console.WriteLine("ArgumentNullException: {0}", e);
            }
            catch (SocketException e)
            {
                Console.WriteLine("SocketException: {0}", e);
            }
            Console.WriteLine("Press Enter to Exit");
            Console.ReadLine();
        }
    }
}

伺服器端完整程式碼

// Server 端
using System;
using System.Text;
using System.Net;
using System.Net.Sockets;

namespace Project1
{
    class Program
    {
        static void Main()
        {
            try
            {
                int port = 2000;
                string host = "127.0.0.1";
                IPAddress ip = IPAddress.Parse(host);
                IPEndPoint ipe = new IPEndPoint(ip, port);
                
                Socket server = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
                server.Bind(ipe);
                server.Listen(0);
                Console.WriteLine("Wait for connect");
                
                Socket clientSocket = server.Accept();
                Console.WriteLine("Get a connect");
                
                string recvStr = "";
                byte[] recvBytes = new byte[1024];
                int bytes = clientSocket.Receive(recvBytes, recvBytes.Length, 0);
                recvStr += Encoding.ASCII.GetString(recvBytes, 0, bytes);
                Console.WriteLine("Server Get Message: {0}", recvStr);
                
                string sendStr = "Ok! Client Send Message Successful!";
                byte[] bs = Encoding.ASCII.GetBytes(sendStr);
                clientSocket.Send(bs, bs.Length, 0);
                
                clientSocket.Close();
                server.Close();
            }
            catch (ArgumentNullException e)
            {
                Console.WriteLine("ArgumentNullException: {0}", e);
            }
            catch (SocketException e)
            {
                Console.WriteLine("SocketException: {0}", e);
            }
            Console.WriteLine("Press Enter to Exit");
            Console.ReadLine();
        }
    }
}

程式碼解析

  • IPEndPoint:封裝 IP 位址與連接埠,作為連線端點
  • Socket 建構子:指定位址族別、Socket 類型與通訊協定
  • 同步阻塞模式:Connect、Accept、Send、Receive 皆為同步操作,執行緒會等待完成
  • 例外處理:捕捉 ArgumentNullException 與 SocketException 確保程式健壯性

此範例展示了最基礎的同步 TCP 通訊流程,適合初學者理解 Socket 核心運作機制。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved