c#實現最簡單的socket通訊

頭號理想發表於2020-10-03

在區域網等聯機遊戲中 我們有很多方式可以實現聯機
有各種外掛等等
我們用程式碼來自己寫伺服器端和客戶端 不用任何的外掛

我先給出原始碼

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

namespace JungleWars//伺服器端
{
    class Program
    {
        static void Main(string[] args)
        {
            Socket serverSocket = new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);//地址型別,流,協議型別
            //192.168.43.76 本機ip:127.0.0.1

            IPAddress ipaddress = IPAddress.Parse("192.168.43.76");
            IPEndPoint ipendpoint = new IPEndPoint(ipaddress, 8000);

            serverSocket.Bind(ipendpoint);//繫結完成

            serverSocket.Listen(10);//處理連結佇列個數 為0則為不限制

             
            Socket clientSocket = serverSocket.Accept();//接收一個客戶端連結

            ///向客戶端傳送一條訊息
            string msg = "Hello client!";
            byte[] date =  System.Text.Encoding.UTF8.GetBytes(msg);//轉換成為bytes陣列
            clientSocket.Send(date);

            ///接收一條客戶端的訊息
            byte[] dateBuffer = new byte[1024];


            int count = clientSocket.Receive(dateBuffer);

            string msgReceive = System.Text.Encoding.UTF8.GetString(dateBuffer, 0, count);
            Console.WriteLine(msgReceive);

            Console.ReadKey();

            clientSocket.Close();
            serverSocket.Close();
        }
    }
}

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

namespace Tcp客戶端
{
    class Program
    {
        static void Main(string[] args)
        {
            Socket clientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            clientSocket.Connect(new IPEndPoint(IPAddress.Parse("192.168.43.76"), 8000));

            byte[] date = new byte[1024];
            int count = clientSocket.Receive(date);
            string msg = Encoding.UTF8.GetString(date, 0, count);
            Console.WriteLine(msg);

            string s = Console.ReadLine();
         
            clientSocket.Send(Encoding.UTF8.GetBytes(s));
            
            Console.ReadKey();
            clientSocket.Close();
        }
    }
}

上邊兩個程式碼即可實現簡單的通訊
在這裡插入圖片描述
我們可以實現互發訊息

客戶端:

在這裡插入圖片描述
伺服器端:
在這裡插入圖片描述
其中的語句註釋寫的很清楚 如果有問題可以聯絡我
主頁有我的聯絡方式

相關文章