C#實現一個簡易的 Socket/TCP 服務器與客戶端

jopen 9年前發布 | 5K 次閱讀 C#

該“Socket / 套接字”示例為同步的,如果你需要學習Socket,那么學

習同步方式是很有必要的,異步是從同步過渡過去的。首先你需要

創建兩個控制臺項目 一個為Server / 服務器 另一個為Client / 客戶端

服務器:

    namespace Server
{
using System;
using System.Diagnostics;
using System.Net;
using System.Net.Sockets;
using System.Text;

    class Program  
    {  
        static void Main(string[] args)  
        {  
            // 物質女的服務器  
            Console.Title = "Server of pid:" + Process.GetCurrentProcess().Id;  

            int port = 91; // 服務器端口號  
            int backlog = 0; // 臨時掛起的客戶端連接的最大數量  
            IPAddress ip = IPAddress.Parse("192.168.1.5"); // 服務器IPv4地址  

            Socket sock = new Socket( // 構建一個套接字服務  
                    AddressFamily.InterNetwork,  
                    SocketType.Stream,  
                    ProtocolType.Tcp  
                );  

            sock.Bind(new IPEndPoint(ip, port)); // 綁定服務器地址  
            sock.Listen(backlog); // 開始偵聽  

            byte[] buffer = new byte[512]; // 字節緩沖區  

            while (true) // 循環接收請求  
            {  
                Socket client = sock.Accept(); // 為客戶端建立服務連接  

                int offset = client.Receive(buffer, buffer.Length, SocketFlags.None); // 接收客戶端傳入的數據  

                Console.WriteLine(Encoding.Default.GetString(buffer, 0, offset));   // 輸出客戶端傳入的數據  

                // 服務器回應客戶端  
                client.Send(Encoding.Default.GetBytes("服務器:馬上和你要分手"), SocketFlags.None);  

                // 再見  
                client.Close();  
            }  
        }  
    }  
}  </pre> 


客戶端:

namespace Client
{
using System;
using System.Diagnostics;
using System.Net;
using System.Net.Sockets;
using System.Text;

class Program  
{  
    static void Main(string[] args)  
    {  
        Console.Title = "Client of pid:" + Process.GetCurrentProcess().Id;  

        int port = 91; // 服務器端口號  
        IPAddress ip = IPAddress.Parse("192.168.1.5"); // 服務器地址  

        Socket sock = new Socket( // 構建一個套接字服務  
                AddressFamily.InterNetwork,  
                SocketType.Stream,  
                ProtocolType.Tcp  
            );  

        try  
        {  
            sock.Connect(new IPEndPoint(ip, port)); // 連接服務器  

            sock.Send(Encoding.Default.GetBytes("客戶端:我們一起闖碼頭")); // 發送數據到服務器  

            byte[] buffer = new byte[512]; // 接收緩沖區  
            int offset = sock.Receive(buffer, buffer.Length, SocketFlags.None); // 接收服務器傳入的數據  

            Console.WriteLine(Encoding.Default.GetString(buffer, 0, offset)); // 輸出服務器傳入的數據  

            sock.Close(); // 再見  
        }  
        catch(SocketException e)  
        {  
            Console.WriteLine(e.Message); // 輸出發生錯誤的信息  
        }  
        Console.ReadKey(false);  
    }  
}  

} </pre>

服務器與客戶端兩份代碼寫好并測試 首先你需要啟動服務器 

然后再運行客戶端

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!