BytesIO | C# 超简洁的TCP服务端开发(完整源码+视频教程)

简介: 本章将继续利用BytesIO开发TCP的服务端,简洁明了依然是主旋律,我们要在三十行代码内除了实现一个TCP服务端以外,使其支持聊天室(消息转发)、连接数限制、心跳超时检测等功能。现在,一起跟着视频敲一敲吧!

在这里插入图片描述

C# 超简洁的TCP服务端开发

@[toc]


前言

在前一篇文章《BytesIO系列(一) 轻松实现TCP客户端》,我们实现了从零开始开发一个TCP通信客户端程序,利用BytesIO的便捷手写代码不超过三十行。
本章将继续利用BytesIO开发TCP的服务端,简洁明了依然是主旋律,我们要在三十行代码内除了实现一个TCP服务端以外,使其支持聊天室(消息转发)、连接数限制、心跳超时检测等功能。
现在,一起跟着视频敲一敲吧!

视频教程

https://player.bilibili.com/player.html?aid=897096259


核心代码

服务端代码

Visual Studio已经帮我们完成了大部分工作,真正需要我们手敲的代码不超过30行:

using STTech.BytesIO.Core;
using STTech.BytesIO.Tcp;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;

namespace Demo.BytesIO.Server
{
   
    public partial class ServerForm : Form
    {
   
        private TcpServer server;
        public ServerForm()
        {
   
            InitializeComponent();
            CheckForIllegalCrossThreadCalls = false;

            server = new TcpServer();
            server.Port =int.Parse(tbPort.Text);

            server.Started += Server_Started;
            server.Closed += Server_Closed;
            server.ClientConnected += Server_ClientConnected;
            server.ClientDisconnected += Server_ClientDisconnected;

            server.ClientConnectionAcceptedHandle = (s, e) => {
   
                if (server.Clients.Count() < 3)
                {
   
                    return true;
                }
                else
                {
   
                    Print($"服务器已满,关闭客户端[{e.ClientSocket.RemoteEndPoint}]的连接.");
                    return false;
                }
            };
        }

        private void Server_ClientDisconnected(object sender, STTech.BytesIO.Tcp.Entity.ClientDisconnectedEventArgs e)
        {
   
            Print($"客户端[{e.Client.Host}:{e.Client.Port}]断开连接");
        }

        private void Server_ClientConnected(object sender, STTech.BytesIO.Tcp.Entity.ClientConnectedEventArgs e)
        {
   
            Print($"客户端[{e.Client.Host}:{e.Client.Port}]连接成功");
            e.Client.OnDataReceived += Client_OnDataReceived;
            e.Client.UseHeartbeatTimeout(3000);
        }

        private void Client_OnDataReceived(object sender, STTech.BytesIO.Core.Entity.DataReceivedEventArgs e)
        {
   
            TcpClient tcpClient = (TcpClient)sender;
            Print($"来自客户端[{tcpClient.RemoteEndPoint}]的消息: {e.Data.EncodeToString("GBK")}");

            foreach(TcpClient client in server.Clients)
            {
   
                if(client != tcpClient)
                {
   
                    client.SendAsync(e.Data);
                }
            }
        }

        private void Server_Closed(object sender, EventArgs e)
        {
   
            Print("停止监听");
        }

        private void Server_Started(object sender, EventArgs e)
        {
   
            Print("开始监听");
        }

        private void tsmiStart_Click(object sender, EventArgs e)
        {
   
            server.StartAsync();
        }

        private void tsmiClose_Click(object sender, EventArgs e)
        {
   
            server.CloseAsync();
        }

        private void Print(string msg)
        {
   
            tbLog.AppendText($"[{DateTime.Now}] {msg}\r\n");
        }
    }
}

消息转发

可以看到源码中,实现聊天室功能的核心代码:

            foreach(TcpClient client in server.Clients)
            {
   
                if(client != tcpClient)
                {
   
                    client.SendAsync(e.Data);
                }
            }

心跳超时检测

在BytesIO中,进行心跳超时检测只需要一行代码:

<客户端对象>.UseHeartbeatTimeout(<超时时间/毫秒>);

源码下载

下载地址:https://download.csdn.net/download/lgj123xj/85513898

结束语

如果非IT行业的女朋友都能学会的话,应该就算0基础入门的教学视频了吧!
超简单的C#TCP服务端开发入门,短短的代码,完整的功能,掏出你的VS码一个试试手吧!

关于BytesIO还有很多的开发技巧可以分享 ,在其余教程未完成之前,如果有使用上的疑问可以加群讨论。
QQ群:738018341

相关文章
|
15天前
|
数据采集 安全 JavaScript
C#医院手术麻醉信息管理系统源码 对接院内HIS、LIS、PACS
手麻系统的功能涵盖了麻醉临床业务管理、麻醉运营业务管理以及手术进程管理等,实现了将多种麻醉病历文书与医院HIS系统的有效关联,让手术室人员、设备资源和信息资源高度共享;实现了手术安排、各种统计报表等科室管理和科研工作的需求,可借其收集临床数据、进行整合分析,为围术期临床信息、管理、科研提供整体解决方案;该系统的运行,为医护人员提供了流程化、信息化、自动化、智能化的临床业务综合管理。
29 5
|
12天前
|
开发框架 前端开发 JavaScript
采用C#.Net +JavaScript 开发的云LIS系统源码 二级医院应用案例有演示
技术架构:Asp.NET CORE 3.1 MVC + SQLserver + Redis等 开发语言:C# 6.0、JavaScript 前端框架:JQuery、EasyUI、Bootstrap 后端框架:MVC、SQLSugar等 数 据 库:SQLserver 2012
|
29天前
|
安全 JavaScript 前端开发
C#医院手麻系统源码,手术麻醉管理系统源码
手术麻醉管理系统贯穿患者入院至出院全程,整合术前术后流程,如手术排班、麻醉计划、术中监护及术后恢复。采用C#.net6.0、Vue、Ant-Design等技术,与sqlserver2019数据库结合。系统提供麻醉记录、手术安全核查、费用管理等功能,确保信息数字化和流程规范化。通过自动化记录和数据分析,增强手术安全,优化资源分配,并支持医疗质控与研究。
C#医院手麻系统源码,手术麻醉管理系统源码
|
30天前
|
存储 监控 安全
C#手术麻醉系统源码 大型医院手麻系统4大需求是什么?
C#编写的大型医院手术麻醉系统旨在满足四大核心需求:智慧医院建设,要求实时患者信息共享与监控;医院等级评级,强调安全评估与术后管理;电子病历评级,规定手术预约、麻醉信息的标准化;科室需求,包括系统互联、流程信息化、数据追溯、操作简便、文书完整、快速响应、生命体征动态采集及质量控制。系统提升手麻工作的效率与安全性,确保手术顺利进行。
|
1月前
|
数据挖掘 C# 开发工具
采用C#语言开发的全套医院体检系统PEIS源码功能介绍
体检系统,是专为体检中心/医院体检科等体检机构,专门开发的全流程管理系统,通过软件实现检测仪器数据自动提取,内置多级医生工作台,细化工作将体检检查结果汇总,生成体检报告登记到计算机系统中。通过软件系统进行数据分析统计与评判以及建立体检相关的体检档案。从而实现体检流程的信息化,提高工作效率,减少手动结果录入的一些常犯错误。 在实际应用中,医院体检系统能够解决传统体检中手工操作带来的问题,如工作量大、效率低下、易漏检、重检或错检等。通过与医院信息系统(如HIS、LIS、PACS等)的连接,系统能够满足体检中心的日常工作流程,提供更好的管理、统计和查询分析功能。同时,基于网络基础的系统可以在网上传输
27 1
|
2月前
|
前端开发 JavaScript BI
C#区域医院云LIS信息管理系统源码
区域医院云LIS可协助区域内所有临床实验室相互协调并完成日常检验工作,对区域内的检验数据进行集中管理和共享,通过对质量控制的管理,最终实现区域内检验结果互认。其目标是以医疗服务机构为主体,以医疗资源和检验信息共享为目标,集成共性技术及医疗服务关键技术,建立区域协同检验。
33 2
|
2月前
|
开发框架 前端开发 NoSQL
C#医院区域云LIS系统源码
LIS操作流程标本流转----标本核收----标本上机检验----费用汇总----报告审核----报告发布----报告打印等基础流程
38 3
|
3月前
|
运维 数据挖掘 C#
C#大型LIS检验信息系统项目源码
LIS系统能实现临床检验信息化,检验科信息管理自动化。其主要功能是将检验科的实验仪器传出的检验数据经数据分析后,自动生成打印报告,通过网络存储在数据库中,使医生能够通过医生工作站方便、及时地看到患者的检验结果。
33 0
|
3月前
|
监控 小程序 前端开发
C#医院预约挂号小程序源码(前端+后台)
线上预约挂号系统构建了医院和患者的连接,通过改善患者院内的就医服务流程,以微信公众号、支付宝小程序为患者服务入口,为居民提供导诊、预约、支付、报告查询等线上线下一体化的就医服务,缩短患者就诊环节,提高医疗机构服务效率。
86 0
|
3月前
|
小程序 前端开发 C#
C#三甲医院在线预约挂号系统源码
医院在线预约挂号系统是一种方便患者预约挂号的系统,患者可以通过该系统进行预约挂号,省去了到医院现场排队等待的时间,提高了就诊效率。随着医院信息化水平的不断发展,医院在线预约挂号管理系统已成为医院管理中不可或缺的一部分。
58 1