c#

c# beginreceive在哪用

小樊
81
2024-12-04 08:09:54
栏目: 编程语言

BeginReceive 是 C# 中用于异步接收数据的方法,通常在套接字编程中使用。它属于 System.Net.Sockets 命名空间下的 Socket 类。当你需要从套接字接收数据时,可以使用 BeginReceive 方法来执行异步操作。

以下是一个简单的示例,展示了如何使用 BeginReceive 方法:

using System;
using System.Net.Sockets;
using System.Text;
using System.Threading.Tasks;

class Program
{
    static void Main(string[] args)
    {
        // 创建一个新的套接字
        Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

        // 连接到远程服务器
        IPEndPoint serverEndPoint = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 12345);
        socket.Connect(serverEndPoint);

        // 发送数据到服务器
        string message = "Hello, Server!";
        byte[] sendBytes = Encoding.ASCII.GetBytes(message);
        socket.Send(sendBytes);

        // 开始异步接收数据
        socket.BeginReceive(new byte[1024], 0, 1024, SocketFlags.None, new AsyncCallback(ReceiveCallback), socket);

        // 等待用户输入,以便在接收到数据之前保持程序运行
        Console.WriteLine("Press any key to exit...");
        Console.ReadKey();

        // 关闭套接字
        socket.Shutdown(SocketShutdown.Both);
        socket.Close();
    }

    static void ReceiveCallback(IAsyncResult ar)
    {
        // 获取套接字实例
        Socket socket = (Socket)ar.AsyncState;

        // 结束异步接收操作
        int bytesReceived = socket.EndReceive(ar);

        // 将接收到的数据转换为字符串
        string receivedMessage = Encoding.ASCII.GetString(socket.ReceiveBuffer, 0, bytesReceived);

        // 输出接收到的消息
        Console.WriteLine("Received message: " + receivedMessage);

        // 再次开始异步接收数据
        socket.BeginReceive(new byte[1024], 0, 1024, SocketFlags.None, new AsyncCallback(ReceiveCallback), socket);
    }
}

在这个示例中,我们首先创建一个新的套接字并连接到远程服务器。然后,我们发送一条消息到服务器,并使用 BeginReceive 方法开始异步接收数据。当接收到数据时,ReceiveCallback 方法会被调用,我们可以在该方法中处理接收到的数据。最后,我们关闭套接字。

0
看了该问题的人还看了