编程开源技术交流,分享技术与知识

网站首页 > 开源技术 正文

281.C# 使用HPSocket 通讯(c#连接socket)

wxchong 2024-07-21 07:44:29 开源技术 88 ℃ 0 评论

摘要


HPSocket是一款高性能的网络通信库,它是基于IOCP模型(Windows平台)和EPOLL模型(Linux平台)实现的。HPSocket支持TCP、UDP、HTTP等多种通信协议,并且提供了丰富的API,使得开发者可以更加方便地开发出高性能、高稳定性的网络应用。

正文


应用场景

HPSocket的应用场景十分广泛,包括但不限于:

  • 网络游戏:通过HPSocket,开发者可以轻松实现高性能的游戏服务器,支持大量玩家同时在线。
  • 实时通信:HPSocket的高性能和高稳定性使得它非常适合用于实时通信应用,如聊天软件、视频会议等。
  • 物联网:HPSocket也可以用于物联网设备的通信,提供稳定、快速的数据传输。

优势

  • 高性能:基于IOCP和EPOLL模型,能够支持大量并发连接。
  • 稳定性高:经过严格的测试,稳定性非常高。
  • API丰富:提供了丰富的API,方便开发者进行开发。
  • 支持多种通信协议:支持TCP、UDP、HTTP等多种通信协议。

nuget 安装HPSocket

客户端

public partial class Form1 : Form
{
    TcpClient client=new TcpClient();
    public Form1()
    {
        InitializeComponent();
        // 设置事件处理程序
        //连接事件
        client.OnConnect += Client_OnConnect;
        //发送后触发
        client.OnSend += Client_OnSend;
        //接收事件
        client.OnReceive += Client_OnReceive;
        //删除事件
        client.OnClose += Client_OnClose;
        
    }

    private HandleResult Client_OnClose(IClient sender, SocketOperation socketOperation, int errorCode)
    {
        this.Invoke(() =>
        {
            txtLog.AppendText("关闭连接");
            txtLog.AppendText(System.Environment.NewLine);
        });
        return HandleResult.Ok;
    }

    private HandleResult Client_OnReceive(IClient sender, byte[] data)
    {
        this.Invoke(() =>
        {
            txtLog.AppendText("接收数据"+System.Text.Encoding.UTF8.GetString(data));
            txtLog.AppendText(System.Environment.NewLine);
        });
        return HandleResult.Ok;
    }

    private HandleResult Client_OnSend(IClient sender, byte[] data)
    {
        this.Invoke(() =>
        {
            txtLog.AppendText("发送数据");
            txtLog.AppendText(System.Environment.NewLine);
        });
        return HandleResult.Ok;
    }

    private HPSocket.HandleResult Client_OnConnect(HPSocket.IClient sender)
    {
        this.Invoke(() =>
        {
            txtLog.AppendText("打开连接");
            txtLog.AppendText(System.Environment.NewLine);
        });
        if (sender.IsConnected)
        {
            return HandleResult.Ok;
        }
        return HandleResult.Error;
    }

  

    private void Form1_Load(object sender, EventArgs e)
    {

    }

    private void btnConnect_Click(object sender, EventArgs e)
    {
        client.Connect("127.0.0.1", 3001);

    }

    private void btnSend_Click(object sender, EventArgs e)
    {
        // 发送数据
        byte[] bs = Encoding.Default.GetBytes("Hello, HPSocket!");
        client.Send(bs, bs.Length);
    }
}

测试工具

服务器端

 public partial class Form1 : Form
 {
     TcpServer server = new TcpServer();

     public Form1()
     {
         InitializeComponent();
         //准备开始侦听
         server.OnPrepareListen += Server_OnPrepareListen;
         //服务器成功接受一个新的客户端连接请求时被触发
         server.OnAccept += Server_OnAccept;
         //接收数据
         server.OnReceive += Server_OnReceive;
         //关闭
         server.OnClose += Server_OnClose;
     }

     private HPSocket.HandleResult Server_OnClose(HPSocket.IServer sender, IntPtr connId, HPSocket.SocketOperation socketOperation, int errorCode)
     {
         return HPSocket.HandleResult.Ok;
     }

     private HPSocket.HandleResult Server_OnReceive(HPSocket.IServer sender, IntPtr connId, byte[] data)
     {
         this.Invoke(() =>
         {
             txtReceive.AppendText(System.Text.Encoding.UTF8.GetString(data));
             txtReceive.AppendText(System.Environment.NewLine);
         });
         return HPSocket.HandleResult.Ok;
     }

     private HPSocket.HandleResult Server_OnAccept(HPSocket.IServer sender, IntPtr connId, IntPtr client)
     {
         return HPSocket.HandleResult.Ok;
     }

     private HPSocket.HandleResult Server_OnPrepareListen(HPSocket.IServer sender, IntPtr listen)
     {
         return HPSocket.HandleResult.Ok;
     }

     private void btnListen_Click(object sender, EventArgs e)
     {
         //开始侦听
         server.Port = 3001;
         server.Address= "127.0.0.1";
         server.Start();
     }
 }


Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表