溫馨提示×

c#socket通信怎么寫

小億
114
2023-07-26 16:04:02
欄目: 編程語言

在C#中進行Socket通信可以使用System.Net.Sockets.Socket類來實現(xiàn)。

下面是一個簡單的示例,演示如何使用C# Socket進行客戶端和服務(wù)器之間的通信:

服務(wù)器端:

csharp

using System;

using System.Net;

using System.Net.Sockets;

using System.Text;

public class Server

{

    public static void Main()

    {

        // 創(chuàng)建一個IP地址和端口號

        IPAddress ipAddress = IPAddress.Parse("127.0.0.1");

        int port = 8888;

        // 創(chuàng)建一個TCP監(jiān)聽器

        TcpListener listener = new TcpListener(ipAddress, port);

        listener.Start();

        Console.WriteLine("服務(wù)器已啟動...");

        // 接受客戶端連接

        TcpClient client = listener.AcceptTcpClient();

        Console.WriteLine("客戶端已連接...");

        // 獲取網(wǎng)絡(luò)流

        NetworkStream networkStream = client.GetStream();

        // 接收消息

        byte[] buffer = new byte[1024];

        int bytesRead = networkStream.Read(buffer, 0, buffer.Length);

        string message = Encoding.ASCII.GetString(buffer, 0, bytesRead);

        Console.WriteLine("接收到的消息: " + message);

        // 發(fā)送響應(yīng)消息

        string responseMessage = "Hello from the server!";

        byte[] responseData = Encoding.ASCII.GetBytes(responseMessage);

        networkStream.Write(responseData, 0, responseData.Length);

        Console.WriteLine("響應(yīng)消息已發(fā)送.");

        // 關(guān)閉連接

        client.Close();

        listener.Stop();

    }

}

客戶端:

csharp

using System;

using System.Net;

using System.Net.Sockets;

using System.Text;

public class Client

{

    public static void Main()

    {

        // 創(chuàng)建一個IP地址和端口號

        IPAddress ipAddress = IPAddress.Parse("127.0.0.1");

        int port = 8888;


        // 創(chuàng)建一個TcpClient實例并連接服務(wù)器

        TcpClient client = new TcpClient();

        client.Connect(ipAddress, port);

        // 獲取網(wǎng)絡(luò)流

        NetworkStream networkStream = client.GetStream();

        // 發(fā)送消息

        string message = "Hello from the client!";

        byte[] requestData = Encoding.ASCII.GetBytes(message);

        networkStream.Write(requestData, 0, requestData.Length);

        Console.WriteLine("消息已發(fā)送.");

        // 接收響應(yīng)消息

        byte[] buffer = new byte[1024];

        int bytesRead = networkStream.Read(buffer, 0, buffer.Length);

        string responseMessage = Encoding.ASCII.GetString(buffer, 0, bytesRead);

        Console.WriteLine("接收到的響應(yīng)消息: " + responseMessage);

        // 關(guān)閉連接

        client.Close();

    }

}

在上述示例中,服務(wù)器端通過創(chuàng)建TCP監(jiān)聽器并等待客戶端連接。一旦客戶端連接成功,服務(wù)器端就會接收到客戶端發(fā)送

的消息,并返回一個響應(yīng)消息??蛻舳送ㄟ^創(chuàng)建TcpClient實例并連接到服務(wù)器,然后發(fā)送消息并接收響應(yīng)消息。

請注意,這只是一個簡單的示例,可能需要根據(jù)你的具體需求進行適當(dāng)修改。此外,還需要處理異常和錯誤情況,并進行

適當(dāng)?shù)腻e誤處理和資源釋放。

0