首页 > 其他分享 >基于.Net 框架实现WebSocket 简单通信——服务端

基于.Net 框架实现WebSocket 简单通信——服务端

时间:2024-06-11 17:28:46浏览次数:25  
标签:Console socket session WriteLine WebSocket Net 添加 监听 服务端

新建项目

创建一个.Net 框架的控制台程序。

添加包 

项目 → 管理 NuGet 程序包打开包管理窗口,添加SuperWebSocket 程序包。

实现

项目 → 添加类打开添加新项窗口,添加一个C#类。

启动监听 

WebSocketServer socket = new WebSocketServer();

Console.WriteLine("IP:" + ip);
Console.WriteLine("端口:" + port);

if (!socket.Setup(ip, port))
{
    Console.WriteLine("监听地址设置失败!");
    return;
}

if (!socket.Start())
{
    Console.WriteLine("监听启动失败!");
    return;
}

Console.WriteLine("启动服务成功,等待连接……");

 添加连接监听

socket.NewSessionConnected += NewSessionConnected;

void NewSessionConnected(WebSocketSession session)
{
    Console.WriteLine("{0:HH:MM:ss} 与 {1} 创建连接!", DateTime.Now, session.RemoteEndPoint);
}

 添加信息接收监听

socket.NewMessageReceived += NewMessageReceived;

void NewMessageReceived(WebSocketSession session, string message)
{
    Console.WriteLine("{0:HH:MM:ss} 接收到 {1} 发送的信息:{2}", DateTime.Now, session.RemoteEndPoint, message);
}

 添加二进制流接收监听

socket.NewDataReceived += NewDataReceived;

void NewDataReceived(WebSocketSession session, byte[] data)
{
    Console.WriteLine("{0:HH:MM:ss} 接收到来自:{1} 的二进制流,长度:{2}", DateTime.Now, session.RemoteEndPoint, data.Length);
}

 广播(string )

foreach (var session in socket.GetAllSessions())
{
    session.Send(msg);
}

 广播(byte[] )

foreach (var session in socket.GetAllSessions())
{
    session.Send(data, 0, data.Length);
}

添加断连监听

socket.SessionClosed += SessionClosed;

void SessionClosed(WebSocketSession session, SuperSocket.SocketBase.CloseReason reason)
{
    Console.WriteLine("{0:HH:MM:ss} 与 {1} 断连,原因:{2}", DateTime.Now, session.RemoteEndPoint, reason);
}

关闭监听

socket.Stop();

效果

拓展 

IP 端口配置及读取

App.config 添加appSettings 

视图 → 解决方案资源管理器打开资源管理器窗口,在资源管理器窗口找到App.config 并打开,添加appSettings。

<appSettings>
    <add key="SvrIP" value="127.0.0.1" />
    <add key="SvrPort" value="1213" />
</appSettings>

读取

ip = ConfigurationManager.AppSettings["SvrIP"];
int.TryParse(ConfigurationManager.AppSettings["SvrPort"], out port);

客户端 

Unity 实现WebSocket 简单通信——客户端-CSDN博客【代码】Unity 实现WebSocket 简单通信——客户端https://blog.csdn.net/2301_79311694/article/details/139534415

标签:Console,socket,session,WriteLine,WebSocket,Net,添加,监听,服务端
From: https://blog.csdn.net/2301_79311694/article/details/139480304

相关文章

  • 云原生周刊:Kubernetes 十周年 | 2024.6.11
    开源项目推荐KubernetesGoatKubernetesGoat是一个故意设计成有漏洞的Kubernetes集群环境,旨在通过交互式实践场地来学习并练习Kubernetes安全性。kube-state-metrics(KSM)kube-state-metrics是一个用于收集Kubernetes集群状态信息的开源项目,它能够提供各种有用的指......
  • NET8中增加的简单适用的DI扩展库Microsoft.Extensions.DependencyInjection.AutoActiv
    这个库提供了在启动期间实例化已注册的单例,而不是在首次使用它时实例化。单例通常在首次使用时创建,这可能会导致响应传入请求的延迟高于平时。在注册时创建实例有助于防止第一次Request请求的SLA以往我们要在注册的时候启动单例可能会这样写://注册:services.AddSingleton<Fil......
  • yolov5-7.0更改resnet主干网络
    参考链接ClearML教程:https://blog.csdn.net/qq_40243750/article/details/126445671b站教学视频:https://www.bilibili.com/video/BV1Mx4y1A7jy/spm_id_from=333.788&vd_source=b52b79abfe565901e6969da2a1191407开始github地址:https://github.com/z1069614715/objec......
  • unity游戏开发之网络篇netcode
    在多人游戏过程中需要复杂的状态同步机制来支撑多个玩家的状态同步,其中包括位置信息、场景信息、动画信息等等,unity提供了netcode插件来轻松完成这些复杂的网络功能,上手也是非常简单的。下面是该插件使用的基本步骤和注意事项:1.安装网络组件netcode2.配置netcode环境(必备)......
  • WebSocket
    WebSocket介绍WebSocket是基于TCP的一种新的网络协议。它实现了浏览器与服务器全双工通信——浏览器和服务器只需要完成一次握手,两者之间就可以创建持久性的连接,并进行双向数据传输。HTTP协议和WebSocket协议对比:HTTP是短连接WebSocket是长连接HTTP通信是单向的,基于请......
  • 【工作必备知识】Linux系统网络诊断与netstat命令
    【工作必备知识】Linux系统网络诊断与netstat命令大家好,我叫秋意零。今天分享一篇Linux系统中与网络相关的干货(包含相关面试题),有可能对你理解网络有一定帮助。同时工作中网络诊断也时常使用,对排查问题有帮助,绝对干货。如果有帮助记得点赞三连呀。netstat命令netstat......
  • ASP .Net Core Web Api - 简介
    1.项目介绍ASP.NETCore支持两种创建API的方法:基于控制器的方法和最小API。API项目中的控制器是派生自ControllerBase的类。最小API在Lambda或方法中使用逻辑处理程序定义终结点。这里的最小API用的相对较少,所以我们使用基于控制器的方法。WebAPI中的控制器是......
  • C#、.Net通过HttpWebRequest请求WebService接口
    点击查看代码///<summary>///测试按钮中调用WebService接口///</summary>///<paramname="sender"></param>///<paramname="e"></param>privatevoidbutton1_Click(objectsender,EventArgse){//strin......
  • [ToneTuneToolkit][023]UGUI的去色,使UI元素变为灰色
    #regionEnvironmentWindows1022H2Unity2022.3.30f1LTSVSCode1.90.0//ToneTuneToolkit下载地址// https://github.com/MirzkisD1Ex0/ToneTuneToolkit.git#endregion 把UGUI的元素去色!变成灰色!!!超级方便!//该项功能已包含至ToneTuneToolkit插件  01.新建场景,新建......
  • 1_websocket工具封装
    Websocket1构造函数newWebSocket(url[,protocols])参数url:要连接到的URLprotocols:单个协议字符串或协议字符串数组2实例属性binaryType:接收的二进制数据的类型blobarraybufferreadyState:websocket连接的当前状态readyState值mean解释......