using SuperSocket; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using SuperSocket.ProtoBase; using SuperSocket.Server; using SuperSocket.Channel; using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Logging; using IStation.Model; using IStation.Server.SZJTKT.Interface; namespace IStation.Server { internal class ServerHelper :IJobHelper { private IServer _server = null; public async void Start() { if (_server != null) return; var host = SuperSocketHostBuilder.Create(); host.UsePipelineFilterFactory(); host.UseSession(); host.UseHostedService(); host.ConfigureSuperSocket(options => { options.Name = "SZJTKT"; options.MaxPackageLength = 1000000; options.ReceiveBufferSize = 1000000; options.SendBufferSize = 1000000; options.Listeners = new List() { new ListenOptions(){ Ip="Any",Port=ConfigHelper.ServerPort} }; }); host.UsePackageHandler(RequestReceivedHelper.Receive); _server= host.BuildAsServer(); await _server.StartAsync(); LogHelper.Info($"Socket服务,端口:{ConfigHelper.ServerPort},开启成功!"); } public async void Cancel() { if (_server == null) return; await _server.StopAsync(); LogHelper.Info($"Socket服务,端口:{ConfigHelper.ServerPort},关闭成功!"); } } }