编辑
2025-09-27
C#
00

目录

摘要
正文
应用场景
优势
nuget 安装HPSocket
客户端
测试工具
服务器端

摘要

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

正文

应用场景

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

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

优势

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

nuget 安装HPSocket

image.png

客户端

image.png

C#
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); } }

测试工具

image.png

服务器端

image.png

C#
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(); } }

本文作者:技术老小子

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!