public void Init()
 {
     this.server1 = new AsyncMultiSocketServer(8113,"一般加值和退貨");
     this.server2 = new AsyncMultiSocketServer(8114,"自動加值");
     this.server3 = new AsyncMultiSocketServer(8115, "自動加值查詢");
     this.server4 = new AsyncMultiSocketServer(8116, "取水位額度");
 }
예제 #2
0
        public RemoteStageServer(
            IServiceProvider services,
            IActorDirectory actorDirectory,
            IStageDirectory stageDirectory,
            LocalStage localStage,
            ILogger <RemoteStageServer> logger,
            ISocketServer socketServer,
            ITransportSerializer serializer,
            ITelemetry telemetry

            )
        {
            _services = services;

            _actorDirectory = actorDirectory;

            _stageDirectory = stageDirectory;

            _localStage = localStage;

            _socketServer = socketServer;

            _serializer = serializer;

            _logger = logger;

            _telemetry = telemetry;

            _remoteClient = new Lazy <RemoteStageClient>(() => {
                return(_services.GetRequiredService <RemoteStageClient>());
            });

            ProcessServerInput();
        }
예제 #3
0
 public static IObservable <ISocket> OnConnections(this ISocketServer server)
 {
     return(Observable
            .FromEventPattern <EventHandler <SocketConnectionEventArgs>, SocketConnectionEventArgs>(
                h => server.Connected += h, h => server.Connected -= h)
            .Select(x => x.EventArgs.Socket));
 }
예제 #4
0
        /// <summary>获取统计信息</summary>
        /// <param name="socket"></param>
        /// <returns></returns>
        public static String GetStat(this ISocketServer socket)
        {
            if (socket == null)
            {
                return(null);
            }

            var sb = Pool.StringBuilder.Get();

            //sb.AppendFormat("在线:{0:n0}/{1:n0} ", socket.SessionCount, socket.MaxSessionCount);
            if (socket.StatSend.Value > 0)
            {
                sb.AppendFormat("发送:{0} ", socket.StatSend);
            }
            if (socket.StatReceive.Value > 0)
            {
                sb.AppendFormat("接收:{0} ", socket.StatReceive);
            }
            if (socket.StatSession.Value > 0)
            {
                sb.AppendFormat("会话:{0} ", socket.StatSession);
            }

            return(sb.Put(true));
        }
 /// <summary>
 /// Construction 
 /// </summary>
 /// <param name="socket">client socket</param>
 /// <param name="socketServer">the socket server</param>
 /// <param name="logger">logger object for ouput session message</param>
 internal TcpSocketAsyncSession(Socket socket, ISocketServer socketServer, IMsgProtocol protocol, IList<IMsgFilter> requestFilters, IList<IMsgHandler> requestHandlers, ILogger logger)
     : base(protocol, requestFilters, requestHandlers, logger)
 {
     m_ClientSocket = socket;
     m_SocketServer = socketServer;
     m_Logger = logger;
 }
예제 #6
0
 public ProxyServer(Action <string> logWarning, AndroidPortReverser portReverser, int port)
 {
     _socketServer = SocketServer.Start(port, ClientThread);
     _logWarning   = logWarning;
     _portReverser = portReverser;
     _isEmpty.OnNext(Unit.Default);
 }
        /// <summary>
        /// 初始化加载器
        /// </summary>
        public void initializeSocketServer()
        {
            //读取配置

            m_Protocol = new  FixSizeProtocol(5);
            m_RequestHandlers = new List<IMsgHandler>();   
            m_RequestHandlers.Add(new ResponseHandler());

            m_RequestFilters = new List<IMsgFilter>();
           // m_RequestFilters.Add(new Protocol.RequestFilters.DateEcrptyFilter());
           // m_RequestFilters.Add(new Protocol.Handlers.ServerMarkFilter());
#if DEBUG
            m_ServerConfig = new ServerConfig();
            m_ServerConfig.BackLogCount = 5;
            m_ServerConfig.BufferSize = 1024;
            m_ServerConfig.MaxSessionCount = 10;
            m_ServerConfig.ServerIpAddress = "192.168.10.2";
            m_ServerConfig.ServerMode = ServerMode.UDP;
            m_ServerConfig.ServerPort = 6000;
            m_ServerConfig.SessionTimeout = 20*60;
            m_ServerConfig.ServerName = "ATONServer";
            m_ConnectFilterList = new List<IConnectFilter>();
#endif
            m_SocketServer = SocketServerFactory.CreateSocketServer(m_ServerConfig.ServerMode);
            m_SocketServer.initializeServer(m_ServerConfig, m_Protocol, m_ConnectFilterList, m_RequestFilters, m_RequestHandlers, new ConsoleLogger(LoggerLevelE.INFO));
        }
예제 #8
0
파일: TcpSession.cs 프로젝트: Stone840824/X
 internal TcpSession(ISocketServer server, Socket client)
     : this(client)
 {
     Active  = true;
     _Server = server;
     Name    = server.Name;
 }
예제 #9
0
 public void Init()
 {
     this.server1 = new AsyncMultiSocketServer(8113, "一般加值和退貨");
     this.server2 = new AsyncMultiSocketServer(8114, "自動加值");
     this.server3 = new AsyncMultiSocketServer(8115, "自動加值查詢");
     this.server4 = new AsyncMultiSocketServer(8116, "取水位額度");
 }
예제 #10
0
        /// <summary>获取统计信息</summary>
        /// <param name="socket"></param>
        /// <returns></returns>
        public static String GetStat(this ISocketServer socket)
        {
            if (socket == null)
            {
                return(null);
            }

            var sb = new StringBuilder();

            //sb.AppendFormat("在线:{0:n0}/{1:n0} ", socket.SessionCount, socket.MaxSessionCount);
            if (socket.StatSend.Value > 0)
            {
                sb.AppendFormat("发送:{0} ", socket.StatSend);
            }
            if (socket.StatReceive.Value > 0)
            {
                sb.AppendFormat("接收:{0} ", SocketRemoteHelper.GetNetwork(socket.StatReceive));
            }
            if (socket.StatSession.Value > 0)
            {
                sb.AppendFormat("会话:{0} ", SocketRemoteHelper.GetNetwork(socket.StatSession));
            }

            return(sb.ToString());
        }
예제 #11
0
        private IEnumerator Start()
        {
            mHostIp = NetworkUtil.GetAddressIP();

            mSocketServer = FlexiSocket.Create(1366, Protocols.BodyLengthPrefix, false);
            mSocketServer.ClientConnected += delegate(ISocketClientToken client)
            {
                Log.i("OnClientConnected ID:{0} Count:{1}", client.ID, mSocketServer.Clients.Count);
            };
            mSocketServer.SentToClient += delegate(bool success, ISocketClientToken client)
            {
                if (success)
                {
                }
            };

            mSocketServer.ReceivedFromClient += delegate(ISocketClientToken client, byte[] message)
            {
                SocketMsg msg = SerializeHelper.FromProtoBuff <SocketMsg>(message);
                mMessage = msg.msgId + ":" + msg.ToEventID;
                if (!string.IsNullOrEmpty(msg.Msg))
                {
                    mMessage += ":" + msg.Msg;
                }
                Log.i("OnReceivedFromClient:{0}", mMessage);
                mMsgQueue.Enqueue(msg);
            };

            mSocketServer.ClientDisconnected += delegate(ISocketClientToken client)
            {
            };
            mSocketServer.StartListen(10);

            yield return(0);
        }
예제 #12
0
파일: TcpSession.cs 프로젝트: tommybiteme/X
 internal TcpSession(ISocketServer server, Socket client)
     : this(client)
 {
     Active = true;
     _Server = server;
     Name = server.Name;
 }
예제 #13
0
        private static void Main(string[] args)
        {
            _server = new TcpSocketServer("127.0.0.1", 6666);

            _server.OnAcceptCompletedEvent += Server_OnAcceptCompletedEvent;

            _server.OnCloseCompletedEvent += Server_OnCloseCompletedEvent;

            _server.OnDisconnectClientCompletedEvent += Server_OnDisconnectClientCompletedEvent;

            _server.OnReceiveCompletedEvent += Server_OnReceiveCompletedEvent;

            _server.OnSendCompletedEvent += Server_OnSendCompletedEvent;

            _server.Start();

            Console.WriteLine("Start server ...");

            while (true)
            {
                string val = Console.ReadLine();

                if (val == "exit")
                {
                    _server.Close();

                    break;
                }

                _server.SendAll(Encoding.UTF8.GetBytes(val));
            }
        }
예제 #14
0
        /// <summary>添加Socket服务器</summary>
        /// <param name="server"></param>
        /// <returns>添加是否成功</returns>
        public virtual Boolean AttachServer(ISocketServer server)
        {
            if (Servers.Contains(server))
            {
                return(false);
            }

            server.Name = String.Format("{0}{1}{2}", Name, server.Local.IsTcp ? "Tcp" : "Udp", server.Local.Address.IsIPv4() ? "" : "6");
            // 内部服务器日志更多是为了方便网络库调试,而网络服务器日志用于应用开发
            server.Log         = SocketLog ?? Log;
            server.NewSession += Server_NewSession;

            if (SessionTimeout > 0)
            {
                server.SessionTimeout = SessionTimeout;
            }

            server.StatSession.Parent = StatSession;
            server.StatSend.Parent    = StatSend;
            server.StatReceive.Parent = StatReceive;

            server.LogSend    = LogSend;
            server.LogReceive = LogReceive;

            server.Error += OnError;

            Servers.Add(server);

            return(true);
        }
예제 #15
0
        /// <summary>
        /// Create and set up the web server.
        /// </summary>
        /// <param name="server"></param>
        /// <param name="useStaticFiles"></param>
        /// <param name="unpackSite"></param>
        public SensHubHttpServer(ISocketServer server, bool useStaticFiles, bool unpackSite)
            : base(server)
        {
            // Get the root of the static site directory
            IFolder folder = Locator.Current.GetService <IFolder>();

            folder = folder.OpenFolder(ServiceManager.SiteFolder);
            // Unpack the site if we need to
            if (useStaticFiles && unpackSite)
            {
                // We want to serve content from a directory rather than from the resources and
                // we want to unpack our content from the embedded resources
                Assembly asm = Utilities.GetContainingAssembly <SensHubHttpServer>();
                foreach (string resourceName in asm.GetManifestResourceNames())
                {
                    if (!resourceName.StartsWith(SitePrefix))
                    {
                        continue;
                    }
                    // Determine the target file name
                    // TODO: There should be a better way to do this
                    string targetFile = resourceName.Substring(SitePrefix.Length);
                    targetFile = targetFile.Replace('.', '/');
                    int index = targetFile.LastIndexOf('/');
                    targetFile = targetFile.Substring(0, index) + "." + targetFile.Substring(index + 1);
                    // Get the directory
                    string directory = "";
                    index = targetFile.LastIndexOf('/');
                    IFolder target = folder;
                    if (index >= 0)
                    {
                        directory  = targetFile.Substring(0, index);
                        targetFile = targetFile.Substring(index + 1);
                        target     = target.CreateChildren(directory);
                    }
                    // Now copy the resource
                    Stream output = target.CreateFile(targetFile, FileAccessMode.ReadAndWrite, CreationOptions.ReplaceExisting);
                    Stream input  = asm.GetManifestResourceStream(resourceName);
                    input.CopyTo(output);
                    output.Dispose();
                    input.Dispose();
                }
            }
            // Add the appropriate default handler
            if (useStaticFiles)
            {
                AddHttpRequestHandler("/", new StaticHttpHandler(folder));
            }
            else
            {
                AddHttpRequestHandler("/", new HttpResourceHandler(Utilities.GetContainingAssembly <SensHubHttpServer>(), SitePrefix, "index.html"));
            }
            // Add a static file handler for plugin provided images
            folder = Locator.Current.GetService <IFolder>();
            folder = folder.CreateChildren(ServiceManager.SiteFolder + ServiceManager.BaseImageUrl);
            AddHttpRequestHandler(ServiceManager.BaseImageUrl + "/", new StaticHttpHandler(folder));
            // Add the RPC request handler
            AddWebSocketRequestHandler("/api/", new WebSocketRpcHandler());
        }
예제 #16
0
 protected BaseHttpServer(ISocketServer server)
 {
     SocketServer = server;
     SocketServer.ConnectionRequested = ConnectionRequested;
     m_filters    = new List <IHttpFilter>();
     m_handlers   = new Dictionary <string, IHttpRequestHandler>();
     m_wsHandlers = new Dictionary <string, IWebSocketRequestHandler>();
 }
예제 #17
0
 internal NetxService(IServiceProvider container)
     : base(container)
 {
     SocketServer              = container.GetRequiredService <ISocketServer>();
     SocketServer.BinaryInput  = new BinaryInputHandler(BinaryInputHandler);
     SocketServer.Connetions   = new ConnectionFilter(ConnectionFilter);
     SocketServer.MessageInput = new DisconnectHandler(DisconnectHandler);
 }
예제 #18
0
파일: Program.cs 프로젝트: cmgator/Symbiote
 public WebSocketService(ISocketServer server)
 {
     _server = server;
     _server.ClientConnected += ClientConnected;
     _server.ClientDisconnected += ClientDisconnected;
     _server.Shutdown += Shutdown;
     _server.AddMessageHandle(ClientMessage);
 }
예제 #19
0
 public WebSocketService(ISocketServer server)
 {
     _server = server;
     _server.ClientConnected    += ClientConnected;
     _server.ClientDisconnected += ClientDisconnected;
     _server.Shutdown           += Shutdown;
     _server.AddMessageHandle(ClientMessage);
 }
예제 #20
0
 public Server(IServerConfigManager configManager, IConnectionManager connectionManager, ISocketServer socketServer, ICommandManager commandManager)
 {
     _serverConfigManager = configManager;
     _connectionManager   = connectionManager;
     _socketServer        = socketServer;
     _commandManager      = commandManager;
     log.Debug("<-- Instantiated");
 }
예제 #21
0
 public PAMQuotaService()
 {
     InitializeComponent();
     string pamQuota = String.IsNullOrEmpty(System.Configuration.ConfigurationManager.AppSettings["PAMQuotaPortAndServiceName"]) ? "8116:PAMQuota" : System.Configuration.ConfigurationManager.AppSettings["PAMQuotaPortAndServiceName"];
     string pamQuotaPort = pamQuota.Split(':')[0];
     string pamQuotaServiceName = pamQuota.Split(':')[1];
     socketServer1 = new AsyncMultiSocketServer(Convert.ToInt32(pamQuotaPort), pamQuotaServiceName);
 }
예제 #22
0
		protected BaseHttpServer(ISocketServer server)
		{
			SocketServer = server;
			SocketServer.ConnectionRequested = ConnectionRequested;
            m_filters = new List<IHttpFilter>();
            m_handlers = new Dictionary<string, IHttpRequestHandler>();
			m_wsHandlers = new Dictionary<string, IWebSocketRequestHandler>();
		}
예제 #23
0
        public PAMQuotaService()
        {
            InitializeComponent();
            string pamQuota            = String.IsNullOrEmpty(System.Configuration.ConfigurationManager.AppSettings["PAMQuotaPortAndServiceName"]) ? "8116:PAMQuota" : System.Configuration.ConfigurationManager.AppSettings["PAMQuotaPortAndServiceName"];
            string pamQuotaPort        = pamQuota.Split(':')[0];
            string pamQuotaServiceName = pamQuota.Split(':')[1];

            socketServer1 = new AsyncMultiSocketServer(Convert.ToInt32(pamQuotaPort), pamQuotaServiceName);
        }
 /// <summary>
 /// Construction 
 /// </summary>
 /// <param name="socket">client socket</param>
 /// <param name="socketServer">the socket server</param>
 /// <param name="logger">logger object for ouput session message</param>
 internal UdpSocketAsyncSession(Socket socket, ISocketServer socketServer, IMsgProtocol protocol, IList<IMsgFilter> requestFilters, IList<IMsgHandler> requestHandlers, ILogger logger)
     : base(protocol, requestFilters, requestHandlers, logger)
 {
     SessionTimeout = (socketServer as UdpSocketAsyncServer).SessionTimeout;
     m_ClientSocket = socket;
     m_SocketServer = socketServer;
     m_Logger = logger;
     m_SocketAsyncSender = new UdpSocketAsyncSender(socket, socketServer);
 }
예제 #25
0
        public AuthenticateService()
        {
            InitializeComponent();
            string[] authenticate = String.IsNullOrEmpty(System.Configuration.ConfigurationManager.AppSettings["AuthenticatePortAndServiceName"]) ? ("6111:Authenticate").Split(':') : System.Configuration.ConfigurationManager.AppSettings["AuthenticatePortAndServiceName"].Split(':');

            int authenticatePort = Int32.Parse(authenticate[0]);
            string authenticateServiceName = authenticate[1];
            this.socketServer1 = new AsyncMultiSocketServer(authenticatePort, authenticateServiceName);
        }
예제 #26
0
        static void Main(string[] args)
        {
            ISocketServer server = null;

            Console.WriteLine();
            Console.WriteLine("Welcome to the socket server.");
            Console.WriteLine();
            Console.WriteLine("Which server type would you like to create?");
            Console.WriteLine("   1) Hello World Server");
            Console.WriteLine("   2) Stocks Server");
            Console.WriteLine();

            string input = Console.ReadLine();

            if (input == "1")
            {
                server = new HelloServer();
                server.Initialize("/server", "http://localhost:2709");

                Console.WriteLine("");
                Console.WriteLine("The Hello World Server is now available under ws://localhost:8181/server.");
                Console.WriteLine("");
            }
            else if (input == "2")
            {
                server = new StockServer();
                server.Initialize("/stocks", "http://localhost:2709");

                Console.WriteLine("");
                Console.WriteLine("The Stocks Server is now available under ws://localhost:8181/stocks.");
                Console.WriteLine("");
            }
            else
            {
                Console.WriteLine("");
                Console.WriteLine(string.Format("Sorry, {0} is not a valid option.", input));
                Console.WriteLine("");
            }

            if (server != null)
            {
                server.Start();

                input = string.Empty;
                while (input != "exit")
                {
                    server.Input = input;
                    server.Send();
                    input = Console.ReadLine();
                }
            }

            Console.WriteLine("");
            Console.WriteLine("Closing socket server.");
            Console.WriteLine("");
        }
예제 #27
0
        public SessionCollection(ISocketServer server)
        {
            Server      = server;
            ClearPeriod = 1000;

            clearTimer = new TimerX(RemoveNotAlive, null, ClearPeriod, ClearPeriod)
            {
                Async = true
            };
        }
예제 #28
0
        public AuthenticateService()
        {
            InitializeComponent();
            string[] authenticate = String.IsNullOrEmpty(System.Configuration.ConfigurationManager.AppSettings["AuthenticatePortAndServiceName"]) ? ("6111:Authenticate").Split(':') : System.Configuration.ConfigurationManager.AppSettings["AuthenticatePortAndServiceName"].Split(':');

            int    authenticatePort        = Int32.Parse(authenticate[0]);
            string authenticateServiceName = authenticate[1];

            this.socketServer1 = new AsyncMultiSocketServer(authenticatePort, authenticateServiceName);
        }
예제 #29
0
		private void ConnectionRequested(ISocketServer server, string hostname, Stream input, Stream output)
		{
			byte[] buffer = new byte[32];
			while (true) 
			{
				int read = input.Read(buffer, 0, buffer.Length);
				if (read == 0)
					break;
				output.Write(buffer, 0, read);
			}
		}
예제 #30
0
 internal Core(Configuration configuration,
               ISocketServer socketServer,
               IEnumerable <IBaseController> baseControllers,
               params string[] parameters)
 {
     GCSettings.LatencyMode = GCLatencyMode.LowLatency;
     CoreStartParameters.ExecParams(_configuration, PathConfiguration, parameters);
     _configuration   = configuration;
     _socketServer    = socketServer;
     _baseControllers = baseControllers;
 }
예제 #31
0
        public static ISocketServer CreateSocketServer(string name)
        {
            Type clientCls = transferDLL.GetClass(name + "_server");

            if (clientCls == null)
            {
                return(null);
            }
            ISocketServer server = Activator.CreateInstance(clientCls) as ISocketServer;

            return(server);
        }
예제 #32
0
        public SessionCollection(ISocketServer server)
        {
            Server = server;

            var p = ClearPeriod * 1000;

            clearTimer = new TimerX(RemoveNotAlive, null, p, p)
            {
                Async      = true,
                CanExecute = () => _dic.Any(),
            };
        }
예제 #33
0
 internal Core(Configuration configuration,
               IWebApiBootstraper webapiBootstrap,
               ISocketServer socketServer,
               IEnumerable <IBaseController> baseControllers,
               MessageCommunicationFactory communicationFactory)
 {
     _configuration   = configuration;
     _webapiBootstrap = webapiBootstrap;
     _socketServer    = socketServer;
     _baseControllers = baseControllers;
     _communication   = communicationFactory.Create();
 }
        /// <summary>
        /// 最大客户端数
        /// </summary>
        /// <param name="numClient"></param>
        public UdpSocketAsyncSender(Socket socket, ISocketServer server)
        {
            m_socket = socket;
            m_server = server;
            m_BufferSize = (server as UdpSocketAsyncServer).BufferSize;

            m_singleBuffer = new byte[m_BufferSize];

            m_socketArgs = new SocketAsyncEventArgs();
            m_socketArgs.SetBuffer(m_singleBuffer, 0, 0);
            m_socketArgs.Completed += socketArgs_Completed;
        }
예제 #35
0
        public SocketServer(ISocketServer server, string ip, int port)
        {
            mSocketServer = server;
            this.mClients = new List <Socket>();
            this.mServer  = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            IPEndPoint iPEndPoint = new IPEndPoint(IPAddress.Parse(ip), port);

            this.mServer.Bind(iPEndPoint);
            this.mServer.Listen(10);
            Debug.Log(string.Format("Server {0} Start", this.mServer.LocalEndPoint.ToString()));
            this.mServer.BeginAccept(new AsyncCallback(ClientListen), mServer);
        }
예제 #36
0
 /// <summary>附加服务器</summary>
 /// <param name="server"></param>
 /// <returns></returns>
 public override bool AttachServer(ISocketServer server)
 {
     // 接收文件需要顺序
     if (server is TcpServer)
     {
         var tcp = server as TcpServer;
         tcp.UseProcessAsync = false;
         // 连续传输文件,间隔不得超过5秒
         tcp.SessionTimeout = 5;
     }
     return(base.AttachServer(server));
 }
        /// <summary>
        /// Handle server connection request
        /// </summary>
        /// <param name="sender">Sender</param>
        /// <param name="hostname">Host Name</param>
        /// <param name="input">Input stream</param>
        /// <param name="output">Output stream</param>
        private async void Server_ConnectionRequested(ISocketServer sender, string hostname, Stream input, Stream output)
        {
            await Dispatcher.RunAsync(CoreDispatcherPriority.High, async() =>
            {
                if (stopPreview.IsEnabled)
                {
                    await RequestBuilder.StopIntercom();
                }

                Frame.Navigate(typeof(IncomingCall));
            });
        }
예제 #38
0
        public void Start()
        {
            TransferConfig.TransferDLLDir = SrvConfig.NetDir;
            ISocketServer <object> server = NetFactory.CreateSocketServer <object>(SrvConfig.NetComponent);

            if (server.StartRun(SrvConfig.SrvHost, SrvConfig.SrvPort))
            {
                //网络启动成功,这里注册委托,不采用获取模式
                //由于我的实现,如果是另外一种方式,会阻塞等待,而且是一个线程
                server.CallData(RecviceNet);
            }
        }
예제 #39
0
 /// <summary>
 /// Create and set up the web server.
 /// </summary>
 /// <param name="server"></param>
 /// <param name="useStaticFiles"></param>
 /// <param name="unpackSite"></param>
 public SensHubHttpServer(ISocketServer server, bool useStaticFiles, bool unpackSite)
     : base(server)
 {
     // Get the root of the static site directory
     IFolder folder = Locator.Current.GetService<IFolder>();
     folder = folder.OpenFolder(ServiceManager.SiteFolder);
     // Unpack the site if we need to
     if (useStaticFiles && unpackSite)
     {
         // We want to serve content from a directory rather than from the resources and
         // we want to unpack our content from the embedded resources
         Assembly asm = Utilities.GetContainingAssembly<SensHubHttpServer>();
         foreach (string resourceName in asm.GetManifestResourceNames())
         {
             if (!resourceName.StartsWith(SitePrefix))
                 continue;
             // Determine the target file name
             // TODO: There should be a better way to do this
             string targetFile = resourceName.Substring(SitePrefix.Length);
             targetFile = targetFile.Replace('.', '/');
             int index = targetFile.LastIndexOf('/');
             targetFile = targetFile.Substring(0, index) + "." + targetFile.Substring(index + 1);
             // Get the directory
             string directory = "";
             index = targetFile.LastIndexOf('/');
             IFolder target = folder;
             if (index >= 0)
             {
                 directory = targetFile.Substring(0, index);
                 targetFile = targetFile.Substring(index + 1);
                 target = target.CreateChildren(directory);
             }
             // Now copy the resource
             Stream output = target.CreateFile(targetFile, FileAccessMode.ReadAndWrite, CreationOptions.ReplaceExisting);
             Stream input = asm.GetManifestResourceStream(resourceName);
             input.CopyTo(output);
             output.Dispose();
             input.Dispose();
         }
     }
     // Add the appropriate default handler
     if (useStaticFiles)
         AddHttpRequestHandler("/", new StaticHttpHandler(folder));
     else
         AddHttpRequestHandler("/", new HttpResourceHandler(Utilities.GetContainingAssembly<SensHubHttpServer>(), SitePrefix, "index.html"));
     // Add a static file handler for plugin provided images
     folder = Locator.Current.GetService<IFolder>();
     folder = folder.CreateChildren(ServiceManager.SiteFolder + ServiceManager.BaseImageUrl);
     AddHttpRequestHandler(ServiceManager.BaseImageUrl + "/", new StaticHttpHandler(folder));
     // Add the RPC request handler
     AddWebSocketRequestHandler("/api/", new WebSocketRpcHandler());
 }
예제 #40
0
        internal NetxService(IServiceProvider container)
            : base(container)
        {
            SocketServer              = container.GetRequiredService <ISocketServer>();
            SocketServer.BinaryInput  = new BinaryInputHandler(BinaryInputHandler);
            SocketServer.Connetions   = new ConnectionFilter(ConnectionFilter);
            SocketServer.MessageInput = new DisconnectHandler(DisconnectHandler);

            foreach (var initialization in container.GetServices <Initialization>())
            {
                initialization.initialize();
            }
        }
예제 #41
0
 private void ConnectionRequested(ISocketServer server, string hostname, Stream input, Stream output)
 {
     byte[] buffer = new byte[32];
     while (true)
     {
         int read = input.Read(buffer, 0, buffer.Length);
         if (read == 0)
         {
             break;
         }
         output.Write(buffer, 0, read);
     }
 }
예제 #42
0
        /// <summary>
        /// 创建传输组件的服务端
        /// </summary>
        /// <param name="name"></param>
        /// <returns></returns>
        public static ISocketServer <T> CreateSocketServer <T>(string name)
        {
            Type srvCls = transferDLL.GetClass(name + "_server");

            if (srvCls == null)
            {
                return(null);
            }
            Type cls = srvCls.MakeGenericType(typeof(T));
            ISocketServer <T> server = Activator.CreateInstance(cls) as ISocketServer <T>;

            return(server);
        }
예제 #43
0
 public ALOLService_v2()
 {
     InitializeComponent();
     string autoload = String.IsNullOrEmpty(System.Configuration.ConfigurationManager.AppSettings["AutoLoadPortAndServiceName"]) ? "8114:AutoLoad" : System.Configuration.ConfigurationManager.AppSettings["AutoLoadPortAndServiceName"];
     string autoloadPort = autoload.Split(':')[0];
     string autoloadServiceName = autoload.Split(':')[1];
     socketServer1 = new AsyncMultiSocketServer(Convert.ToInt32(autoloadPort), autoloadServiceName);
     string autoloadQuery = String.IsNullOrEmpty(System.Configuration.ConfigurationManager.AppSettings["AutoLoadQueryPortAndServiceName"]) ? "8115:AutoLoadQuery" : System.Configuration.ConfigurationManager.AppSettings["AutoLoadQueryPortAndServiceName"];
     string autoloadQueryPort = autoloadQuery.Split(':')[0];
     string autoloadQueryServiceName = autoloadQuery.Split(':')[1];
     socketServer2 = new AsyncMultiSocketServer(Convert.ToInt32(autoloadQueryPort), autoloadQueryServiceName);
     string loadAndPurchaseReturn = String.IsNullOrEmpty(System.Configuration.ConfigurationManager.AppSettings["LoadAndPurchaseReturnPortAndServiceName"]) ? "8113:LoadAndPurchaseReturn" : System.Configuration.ConfigurationManager.AppSettings["LoadAndPurchaseReturnPortAndServiceName"];
     string loadAndPurchaseReturnPort = loadAndPurchaseReturn.Split(':')[0];
     string loadAndPurchaseReturnServiceName = loadAndPurchaseReturn.Split(':')[1];
     socketServer3 = new AsyncMultiSocketServer(Convert.ToInt32(loadAndPurchaseReturnPort), loadAndPurchaseReturnServiceName);
 }
예제 #44
0
        public SensuClient(
            ISensuClientConfigurationReader sensuClientConfigurationReader, 
            IKeepAliveScheduler keepAliveScheduler, 
            ISubScriptionsReceiver subScriptionsReceiver,
            ISocketServer socketServer,
            IStandAloneCheckScheduler standAloneCheckScheduler
            )
        {
            Log.Debug("sensu-client constructor");

            try
            {
                _sensuClientConfigurationReader = sensuClientConfigurationReader;
            }
            catch (Exception ex)
            {

                Log.Error(ex, "Error getting configuration reader:");
            }
            
            
            Log.Debug("sensu-client configuration read!");

            _keepAliveScheduler = keepAliveScheduler;
            Log.Debug("sensu-client keepalive i");

            _subScriptionsReceiver = subScriptionsReceiver;
            _socketServer = socketServer;
            _standAloneCheckScheduler = standAloneCheckScheduler;
            Log.Debug("sensu-client subscription");

            _socketServer = socketServer;
            Log.Debug("sensu-client socket server");

            _standAloneCheckScheduler = standAloneCheckScheduler;
            _keepalivethread = new Thread(_keepAliveScheduler.KeepAlive);
            _subscriptionsthread = new Thread(_subScriptionsReceiver.Subscriptions);
            Log.Debug("Threads started");

            LoadConfiguration();
            
            Log.Debug("Configuration loaded");

        }
예제 #45
0
 public ClientRequestHandler(int clientNo,Socket socket4Client,ISocketServer socketServer,IState state)
 {
     //init backgroundworker
     this.backgroundWorker = new BackgroundWorker()
     {
         WorkerSupportsCancellation = true
     };
     this.backgroundWorker.DoWork += new DoWorkEventHandler(backgroundWorker_DoWork);
     this.backgroundWorker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(backgroundWorker_RunWorkerCompleted);
     //init variable
     this.ClientNo = clientNo;
     this.ClientSocket = socket4Client;
     this.ClientSocket.SendTimeout = this.writeTimeout;
     this.ClientSocket.ReceiveTimeout = this.readTimeout;
     this.SocketServer = socketServer;//link from parent socket server
     this.KeepService = true;
     this.ServiceState = state;
     //init logger
     //if (log == null)
     //{
     //    log = LogManager.GetLogger(typeof(ClientRequestHandler));
     //}
 }
 public void Init()
 {
     _server = new UdpSocketServer<MockLogicServer, MockLogicServer>(IPAddress.Loopback, 50000, BufferSize, 10);
 }
예제 #47
0
 public ClientRequestHandler(int clientNo, Socket socket4Client, ISocketServer socketServer)
     : this(clientNo,socket4Client,socketServer,new State_Authenticate())
 {
 }
예제 #48
0
		/// <summary>
		/// Handle the HTTP connection
		/// 
		/// This implementation doesn't support keep alive so each HTTP session
		/// consists of parsing the request, dispatching to a handler and then
		/// sending the response before closing the connection.
		/// </summary>
		/// <param name="server"></param>
		/// <param name="hostname"></param>
		/// <param name="input"></param>
		/// <param name="output"></param>
		private void ConnectionRequested(ISocketServer server, string hostname, Stream input, Stream output)
		{
			HttpRequestProcessor processor = new HttpRequestProcessor(this);
			processor.ProcessHttpRequest(input, output);
		}
예제 #49
0
		protected BaseEchoServer(ISocketServer server)
		{
			m_server = server;
			m_server.ConnectionRequested = ConnectionRequested;
		}
예제 #50
0
 public RocketSocketHost( ISocketServer server, IApplicationAdapter adapter )
 {
     Server = server;
     Adapter = adapter;
 }
예제 #51
0
파일: Program.cs 프로젝트: cmgator/Symbiote
 public void Stop()
 {
     _server.Dispose();
     _server = null;
 }
 public CardApplication(ISocketServer socketServer) : base(socketServer, MaxPlayers)
 {
     _players = new List<Player>();
     _deck = CardDefinitions.GetDeck();
 }
 protected BaseApplication(ISocketServer socketServer, int maxConnections)
 {
     _socketServer = socketServer;
     _socketServer.MaxConnections = maxConnections;
     _socketServer.UserMessageHandler = HandleMessage;
 }