技术好文:Smark.Net实现简单聊天程序

简介: 技术好文:Smark.Net实现简单聊天程序

"

最近一直和Asterisk打交道,所以又写起了Socket tcp。Smark.Net是基于Socket Tcp封装的组件,主要用途是简化Socket tcp通讯的实现;已经使用它来实现了Asterisk的管理程序和AGI接管程序,以下使用Smark.Net实现一个简单的聊开程序。该程序主要分为两部分,一部分是服务端另一部分就是客户端;信息通过服务端转发到相关客户端。先看下实现的效果图再细讲每端的实现。

服务端

定义服务构建监听程序:

private Smark.Net.Server

new Smark.Net.Server

Smark.Net.Server是一个Socket Tcp的服务类,它的泛参描述这个服务是用于那个IClient的实现,XMLClient是一个实现对象,它的泛参是描述这个Client的数据分包实现。

定义相关事件:

mServer.Coding = Encoding.UTF8;

mServer.ClientDisposed += (o, c) => {

Invoke(new Action

};

mServer.ClientConnected += (o, c) => {

Smark.Net.Messages.XMLClient

= (Smark.Net.Messages.XMLClient

msgclient.MessageReceive += MessageReceive;

msgclient.Receive

msgclient.Receive//代码效果参考:https://v.youku.com/v_show/id_XNjQwMDM5NzAyOA==.html

msgclient.Receive

};

mServer.Open(""192.168.1.128"", 9120,50);

在相关事件定义了服务端的编码,还有客户端接入和退出的一些相关事件。在客户端接入事件中还分别定义了一个数据接收事件。

MessageReceive事件:

if (e.Message is Chats.Services.Login)

{

Chats.Services.Login login = (Chats.Services.Login)e.Message;

if (mClients.FindIndex(item => { return item.Name == login.UserName; }) >= 0)

{

e.Client.Send(new Chats.Services.Failure{ Error=""用户已经存在!"", ID= e.Message.ID});

e.Client.Dispose();

}

else{

e.Client【""Logined""】 =login.UserName;

e.Client.Name = login.UserName;

//代码效果参考:https://v.youku.com/v_show/id_XNjQwNjg0MzE0NA==.html

e.Client.Send(new Chats.Services.Success { ID= e.Message.ID});

}

}

else

{

"
image.png

相关文章
|
9天前
|
人工智能 前端开发 开发工具
解读.NET 技术的开发潜力
本文全面介绍了.NET技术在软件开发领域的核心优势、创新应用及面临的挑战。.NET以其统一的开发平台、强大的工具和跨平台能力,成为企业级应用、Web应用乃至游戏开发的理想选择。然而,在性能优化、容器化及AI集成等方面仍需不断突破。通过积极拥抱开源和社区驱动模式,.NET将持续推动软件开发的进步。
26 1
|
22天前
|
Ubuntu 持续交付 API
如何使用 dotnet pack 打包 .NET 跨平台程序集?
`dotnet pack` 是 .NET Core 的 NuGet 包打包工具,用于将代码打包成 NuGet 包。通过命令 `dotnet pack` 可生成 `.nupkg` 文件。使用 `--include-symbols` 和 `--include-source` 选项可分别创建包含调试符号和源文件的包。默认情况下,`dotnet pack` 会先构建项目,可通过 `--no-build` 跳过构建。此外,还可以使用 `--output` 指定输出目录、`-c` 设置配置等。示例展示了创建类库项目并打包的过程。更多详情及命令选项,请参考官方文档。
72 11
|
22天前
|
监控 网络协议 API
.NET WebSocket 技术深入解析,你学会了吗?
【9月更文挑战第4天】WebSocket 作为一种全双工协议,凭借低延迟和高性能特点,成为实时应用的首选技术。.NET 框架提供了强大的 WebSocket 支持,使实时通信变得简单。本文介绍 WebSocket 的基本概念、.NET 中的使用方法及编程模型,并探讨其在实时聊天、监控、在线游戏和协同编辑等场景的应用,同时分享最佳实践,帮助开发者构建高效实时应用。
67 12
|
16天前
|
人工智能 前端开发 Devops
.NET技术自发布以来,在软件开发领域发挥了重要作用
【9月更文挑战第12天】.NET技术自发布以来,在软件开发领域发挥了重要作用。本文分为三部分探讨其在现代开发中的应用:首先介绍.NET的核心价值,包括语言多样性、强大的开发工具支持、丰富的类库、跨平台能力和活跃的社区;接着分析其在企业级应用、Web开发、移动应用、云服务及游戏开发中的实际应用;最后讨论.NET面临的挑战与未来趋势,如性能优化、容器化、AI集成及跨平台框架竞争等。通过不断的技术创新和社区驱动,.NET将持续推动软件开发的进步。
27 4
|
21天前
|
存储 运维
.NET开发必备技巧:使用Visual Studio分析.NET Dump,快速查找程序内存泄漏问题!
.NET开发必备技巧:使用Visual Studio分析.NET Dump,快速查找程序内存泄漏问题!
|
21天前
|
人工智能 开发框架 算法
C#/.NET/.NET Core技术前沿周刊 | 第 2 期(2024年8.19-8.25)
C#/.NET/.NET Core技术前沿周刊 | 第 2 期(2024年8.19-8.25)
|
21天前
|
传感器 应用服务中间件 Linux
C#/.NET/.NET Core技术前沿周刊 | 第 3 期(2024年8.26-8.31)
C#/.NET/.NET Core技术前沿周刊 | 第 3 期(2024年8.26-8.31)
|
21天前
|
自然语言处理 C# 图形学
使用dnSpyEx对.NET Core程序集进行反编译、编辑和调试
使用dnSpyEx对.NET Core程序集进行反编译、编辑和调试
|
21天前
|
人工智能 算法 C#
C#/.NET/.NET Core技术前沿周刊 | 第 1 期(2024年8.12-8.18)
C#/.NET/.NET Core技术前沿周刊 | 第 1 期(2024年8.12-8.18)
|
28天前
|
Java Spring 自然语言处理
Spring 框架里竟藏着神秘魔法?国际化与本地化的奇妙之旅等你来揭开谜底!
【8月更文挑战第31天】在软件开发中,国际化(I18N)与本地化(L10N)对于满足不同地区用户需求至关重要。Spring框架提供了强大支持,利用资源文件和`MessageSource`实现多语言文本管理。通过配置日期格式和货币符号,进一步完善本地化功能。合理应用这些特性,可显著提升应用的多地区适应性和用户体验。
31 0