精华内容
下载资源
问答
  • 2020-07-17 17:53:18

    一、使用心跳包

    因为:
            1、正常情况下 客户端断开会产生错误,在连接里面能catch到

                    把套接字操作放到try  catch里,如果一端断开了,另一端还继续进行套接字操作就会抱错。你捕捉到就说明另一端完蛋了,进行你要的处理就好了啊 。
            2、但是如果客户端是突然断电等情况下,不会产生这个错误 连接会一直等待下去。


    你可以用心跳包来解决

    1、定义一个与客户连接相关的Boolean变量 b
    2、客户端那边用一个线程 每隔一定时间发送一个无意义的数据包
    3、服务器接收到了就将变量b设置为true
    4、在服务器这边开启一个线程心跳包
     

    public void 心跳包() 
    { 
        while (b) 
        { 
            b = false; 
            Thread.sleep(10000); 
        } //检测到客户端掉线 
    }

    这样就可以判断客户端掉线,你可以进行处理了

     

    基于tcp协议的聊天室,里面用到了心跳包的概念,可以利用广播的形式。时时监测在线用户的状态,当用户下载,离线,客户端附带提示发送给服务器,服务器收到信息,广播给所以在线用户。当然普通的方式是,服务器不停的监测客户端的,检查到异常行为,做异常处理。

    更多相关内容
  • C# 服务,监控Mysql数据库并执行操作

    热门讨论 2014-05-19 16:42:04
    C# 服务,监控Mysql数据库并执行操作 安装服务后,可在Windows服务看到所安装的服务 启动服务后,可执行数据库操作,具体连接数据库下载后可连接自己的数据库测试,执行数据库操作的语句可自行去修改。 仅供参考
  • android 上传文件至C#服务器

    热门讨论 2015-08-09 08:51:41
    本工程,解压直接导入Eclipse调试,直接可以运行。不用改代码,不用改链接,可以直接上传。上传成功后会返回数据,提示你成功了。希望对你有帮助。
  • 安卓Socket与pc端c#服务器的通信完整代码(包含C#服务器与安卓项目工程)
  • c# windows服务框架

    2018-08-09 18:53:08
    windows服务程序框架,基于quqrtz.net 的作业调度框架。带服务安装命令
  • c#服务器搭建

    千次阅读 2020-07-05 22:36:16
    这里写自定义目录标题 c#服务器搭建 1.服务器基本结构,通信层、逻辑层、数据层 2.通信层搭建,socket异步非阻塞 3.逻辑层搭建,文件目录 4.数据层搭建,MySQL、MongoDB,Redis,内部缓存 5.单服框架搭建 6.分布式...

    c#服务器搭建

    后端框架鱼龙混杂,c#方面能打的框架很少,写个能打的c#服务器给后来的人借鉴,少走弯路。

    1.服务器基本结构,通信层、逻辑层、数据层

    一个基本的服务器需要三大块组成,通信层需要保持和客户端的连接,逻辑层实现具体功能,数据层用于数据落地。

    2.通信层搭建,socket异步非阻塞

    c#的socket已经封装的很完美,没必要画蛇添足。
    游戏服的通信只能选择异步非阻塞模型。
    异步收到消息之后,有必要把消息同步到工作线程(基于数据库的服务器不需要)
    只要在处理消息的方法外面套一个try catch,游戏服的所有逻辑报错都可以抛出来,服务器就再也不会因为个别逻辑错误宕机了。
    涉及的类
    Session类 每条连接都创建一个Session,用于隐藏繁琐的socket代码,玩家登录后绑定UID
    Service类 管理所有的Session

    3.逻辑层搭建,文件目录

    逻辑层是服务器主要功能代码写的地方,自由发挥。
    建议建立logic目录进行管理,按照具体功能划分文件

    4.数据层搭建,MySQL、MongoDB,Redis,内部缓存

    MySQL,MongoDB用于数据落地
    Redis用于做缓存,服务器之间通信,最好不要落地
    MySQL,MongoDB使用中,如果不创建索引每条查询都会锁表,所有的查询条件全部加索引,包括时间戳

    5.单服框架搭建

    服务器主要消耗cpu,市面上大多数游戏都搭建在4核8G内存的云服务器上面。
    游戏服为了保证协议的顺序,基本上都是单进程单线程,只会用cup的一个核。
    单,服建议同时人数2000-5000,有多少核开多少服。

    6.分布式负载均衡框架搭建

    单服只能保证2000-5000人,游戏上线十万人来怎么办,分布式就出现了。
    最简单的分布式,就是创建一个均衡服,不超过100行代码。
    比如十万日活的项目。
    买十一台4核服务器,每台开4个2000人的单服。
    均衡服随机找个的可用服务器,把地址发给客户端就行了。
    均衡服用http就行了,不需要写个复杂逻辑

    7.框架性能测试

    找个主流压测软件,找个最复杂的协议,然后测试结果,看每秒并发数量。

    8.写个聊天实例

    展开全文
  • C#服务程序弹窗

    千次阅读 2019-04-10 11:53:08
    C#服务程序编写

    1、首先,创建C#服务程序,打开VS2017,添加新项目,选择windows服务,并根据需要命名,如:MyService,确定
    在这里插入图片描述
    2、如图,切换到代码块
    在这里插入图片描述
    3.初始代码如下,只有开始和结束函数

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Diagnostics;
    using System.Linq;
    using System.ServiceProcess;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace MyService
    {
        public partial class Service1 : ServiceBase
        {
            public Service1()
            {
                InitializeComponent();
            }
    
            protected override void OnStart(string[] args)
            {
            }
    
            protected override void OnStop()
            {
            }
        }
    }
    

    4、右键步骤2图片空白处,添加安装程序
    在这里插入图片描述
    在这里插入图片描述
    5、首先鼠标左键点击serviceProcessInstaller1,查看右下角的属性,并进行编辑,此处需要将Account更改为LocalSystem,这个方式权限比较高。另外用户可以自定义Name
    在这里插入图片描述
    然后鼠标左键点击serviceInstaller1,查看右下角的属性,并进行编辑,用户可以编辑服务的名称ServiceName、显示名称DisplayName、描述Description等属性。
    在这里插入图片描述
    6、设置弹窗,右键项目添加类
    在这里插入图片描述
    在这里插入图片描述
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Runtime.InteropServices;
    using System.Text;
    using System.Threading.Tasks;

    namespace MyService
    {
    class Interop
    {

    	        public static IntPtr WTS_CURRENT_SERVER_HANDLE = IntPtr.Zero;
    	        public static void ShowMessageBox(string message, string title)
    	        {
    	            int resp = 0;
    	            WTSSendMessage(
    	                WTS_CURRENT_SERVER_HANDLE,
    	                WTSGetActiveConsoleSessionId(),
    	                title, title.Length,
    	                message, message.Length,
    	                0, 0, out resp, false);
    	        }
    	
    	        [DllImport("kernel32.dll", SetLastError = true)]
    	        public static extern int WTSGetActiveConsoleSessionId();
    	
    	        [DllImport("wtsapi32.dll", SetLastError = true)]
    	        public static extern bool WTSSendMessage(
    	            IntPtr hServer,
    	            int SessionId,
    	            String pTitle,
    	            int TitleLength,
    	            String pMessage,
    	            int MessageLength,
    	            int Style,
    	            int Timeout,
    	            out int pResponse,
    	            bool bWait
    	        );
    }
    

    }

    在主函数里调用
    在这里插入图片描述
    Interop.ShowMessageBox(“This a message from AlertService.”, “AlertService Message”);
    7、至此C#服务程序配置完成
    8、服务的发布和卸载
    注册:C:\Windows\Microsoft.NET\Framework\v4.0.30319\InstallUtil.exe 工程路径\bin\Debug\WmsWService.exe
    注销:C:\Windows\Microsoft.NET\Framework\v4.0.30319\InstallUtil.exe /u 工程路径\bin\Debug\WmsWService.exe
    WIN+R输入cmd打开命令行进行注册
    在这里插入图片描述
    WIN+R输入services.msc查看服务
    在这里插入图片描述
    右键启动服务
    在这里插入图片描述
    弹窗出现

    展开全文
  • C# 开机启动服务(windows service) 本程序用ASP.NET C#开发,不针对系统版本限制。 本源码拿就来可以直接写您想要的服务,无需再改其它的代码,拿来主义是不是很好?例如订单服务。 本服务是100%源码,源码中包含: ...
  • C# 使用Quartz.NET作业调度的简单Windows服务事例。
  • c# windows服务程序

    2015-02-05 15:59:01
    c# 制作的windows服务程序,主要功能,windows 服务程序怎么打开窗口程序。启动服务 开启一个有弹窗的 应用程序。程序中读写xml文件的部分可以忽略。
  • C#创建、安装、启动、监控、卸载简单的Windows Service 的代码
  • c# windows服务 启动外部程序,程序已开启,但看不到界面
  • 分别通过PerformanceCount、ManagementClass、OpenHardwareMonitor、kernel32 来综合获取下面信息: 内存使用率、总CPU百分比、获得物理总内存(、获得可用内存(G)、获取mac地址、获取分区信息使用空间 ...
  • C#版支持高并发的HTTP服务器源码

    热门讨论 2016-09-30 11:44:04
    C#版支持高并发的HTTP服务器源码,异步处理并发调用,应用于WINFORM程序中,创建自己的HTTP SERVER的首选办法。
  • C#/WInform+DotNetBar实现MySQL一件安装,监控服务状态,开启,关闭,重启服务
  • c# 简单的IOC实现框架,包含通过配置,利用c#反射机制来动态注入
  • C#服务器配置时Token验证的解决方法

    千次阅读 2018-09-03 14:55:06
    一、问题分析 首先要了解的是什么是URL和Token,在这里,URL就是放置了接口程序的网址,这个网址一般得是你自己的服务器或空间地址。你自己在这个空间上某个目录已经有接口程序了,你知道这个接口程序在互联网上...

     

    一、问题分析

    首先要了解的是什么是URL和Token,在这里,URL就是放置了接口程序的网址,这个网址一般得是你自己的服务器或空间地址。你自己在这个空间上某个目录已经有接口程序了,你知道这个接口程序在互联网上的访问地址是什么。而Token就是一个令牌,该令牌是个数字或字母形式的字符串,用于微信服务器与你的服务器进行通讯的时候的身份验证。防止非法数据来搞乱。

    然后要了解的是开发模式为什么要使用Url和Token,使用url是为了让微信服务器和你的服务器进行通讯对话,从而达到开发模式下自动回复的目的。而实现这个通讯,必须有相应的程序为你完成这个功能,而这个程序必须已经开发完成并且放置于url路径下面,当你填写完url和token的时候,微信服务器就会和你的服务器下的程序进行一次认证过程,认证通过表明这个服务器是你的并且程序没有问题。不然你填个不存在的url或者url下面个没有相应的接口功能,那是通不过的。

    详见微信公众平台开发者文档入门指引

    二、问题解决

      protected void Page_Load(object sender, EventArgs e)
      {
         if (Request.HttpMethod.ToLower() == "post")
            {
    
            }else{
    
            WeiXinSiteCheck();
    
             }
    
    
      }
    
       #region 验证微信签名
            /// <summary>
            /// 验证微信签名
            /// </summary>
            /// * 将token、timestamp、nonce三个参数进行字典序排序
            /// * 将三个参数字符串拼接成一个字符串进行sha1加密
            /// * 开发者获得加密后的字符串可与signature对比,标识该请求来源于微信。
            /// <returns></returns>
            private bool CheckSignature()
            {
                string signature = Request.QueryString["signature"];
                string timestamp = Request.QueryString["timestamp"];
                string nonce = Request.QueryString["nonce"];
                string[] ArrTmp = { “WeixinToken”, timestamp, nonce };
                Array.Sort(ArrTmp);     //字典排序
                string tmpStr = string.Join("", ArrTmp);
                tmpStr = FormsAuthentication.HashPasswordForStoringInConfigFile(tmpStr, "SHA1");
                tmpStr = tmpStr.ToLower();
                if (tmpStr == signature)
                {
                    return true;
                }
                else
                {
                    return false;
                }
    
    
            }
    
            /// <summary>
            /// 验证微信签名
            /// </summary>
            /// <param name="Token">与微信平台那边填写的token一致</param>
            private void WeiXinSiteCheck()
            {
                string echoStr = Request.QueryString["echoStr"];
                if (CheckSignature())
                {
                    if (!string.IsNullOrEmpty(echoStr))
                    {
                        Response.Write(echoStr);
                        Response.End();
                    }
                }
            }
            #endregion

    其中Url需配置此页对应的地址,代码中的“WeixinToken”就是填写的那个微信公众平台基本配置中的Token

    展开全文
  • C#简单的web服务器

    2018-10-12 10:21:13
    C#编写的简单的web服务器!
  • C#最简单的服务程序

    2018-08-29 10:53:12
    C#最简单的服务程序,新手练手
  • C#建立最简单的Web服务,无需IIS
  • C#应用Windows服务

    千次阅读 2022-04-01 22:37:25
    c#应用Windows服务背景一、创建windows服务1.创建windows服务工程项2.修改服务的实现文件service1.cs3.配置服务信息二、安装、启动、停止、卸载服务三、总结 背景 最近接到了一个有关进程通信的项目,主要实现的是...
  • 使用C#WinForm加载OBJ的三维模型文件并显示出来,支持鼠标拾取模型,支持三维场景漫游,支持自动计算帧率,。
  • C# Http服务器

    2017-06-01 14:05:17
    【源码】【vs2010】Http服务器
  • 利用C# Socket 实现HTTP WEB服务器

    热门讨论 2012-12-29 11:42:27
    利用C# Socket 实现HTTP WEB服务器 VS2008 + WINDOWS7 调试测试通过
  • C# 控制Windows服务的启动与关闭实例 源代码
  • 主要介绍了C#通过创建Windows服务启动程序的方法,较为详细的分析了C#创建Windows服务应用程序的步骤与相关注意事项,需要的朋友可以参考下
  • C# WebService 客户端 服务器 Json;C# WebService 客户端 服务器 Json
  • 静态网页通过js与本地C#应用程序基于webSocket实时通讯,调用本地打印机进行post小票打印。服务窗体可最小化托盘,请参考https://blog.csdn.net/weixin_40340362/article/details/89401723
  • C#实现程序窗口监视器
  • 使用asp.net 实现了Rest服务接口,包括实现的文档。Rest接口返回的数据包括json、Stream等。代码结构清晰,可以直接用VS2013运行

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 310,918
精华内容 124,367
关键字:

c# 服务

c# 订阅
友情链接: 设计模式.rar