コード例 #1
0
 public Socket(SocketParam sParameter)
 {
     this._LocalIP     = sParameter.LocalIP;
     this._RemoteIP    = sParameter.RemoteIP;
     this._WorkingPort = sParameter.Port;
     this._WorkingMode = sParameter.SocketMode;
 }
コード例 #2
0
 protected ZMQReceivingChannelBase(ChannelManagerBase channelManager, BindingContext bindingContext, Context context, Socket socket, SocketMode socketMode)
     : base(channelManager, bindingContext, socket, socketMode)
 {
     _onReceiveHandler = Receive;
     _onTryReceiveHandler = TryReceive;
     _onWaitForMessageHandler = WaitForMessage;
     _context = context;
 }
コード例 #3
0
        private void ProcessArguments()
        {
            string[] args = System.Environment.GetCommandLineArgs();
            for (int i = 0; i < args.Length; i++)
            {
                switch (args[i].ToLower())
                {
                case "+debug":
                    debug = true;
                    break;

                case "+server.hostname":
                    serverName = args[i + 1];
                    break;

                case "+server.gameport":
                    gamePort = Convert.ToUInt16(args[i + 1]);
                    break;

                case "+server.queryport":
                    queryPort = Convert.ToUInt16(args[i + 1]);
                    break;

                case "+server.steamport":
                    steamPort = Convert.ToUInt16(args [i + 1]);
                    break;

                case "+server.socketmode":
                    switch (args[i + 1].ToUpper())
                    {
                    case "UDP":
                        socketMode = SocketMode.UDP;
                        break;

                    case "P2P":
                        socketMode = SocketMode.P2P;
                        break;
                        // SDR - Will be added when Facepunch.Steamworks has support for it

                        /*
                         * case "SDR":
                         * socketMode = SocketMode.SDR;
                         * break;
                         */
                    }
                    break;
                }
            }
        }
コード例 #4
0
ファイル: ZMQChannelBase.cs プロジェクト: ybqwerty/MessageBus
        protected ZMQChannelBase(ChannelManagerBase channelManager, BindingContext context, Socket socket, SocketMode socketMode)
            : base(channelManager)
        {
            MessageEncodingBindingElement encoderElem = context.BindingParameters.Find <MessageEncodingBindingElement>();

            _encoder = encoderElem.CreateMessageEncoderFactory().Encoder;

            _context    = context;
            _socket     = socket;
            _socketMode = socketMode;

            _onSendHandler = Send;

            _bufferManager = context.BindingParameters.Find <BufferManager>();
        }
コード例 #5
0
ファイル: ZMQChannelBase.cs プロジェクト: ronybot/MessageBus
        protected ZMQChannelBase(ChannelManagerBase channelManager, BindingContext context, Socket socket, SocketMode socketMode)
            : base(channelManager)
        {
            MessageEncodingBindingElement encoderElem = context.BindingParameters.Find<MessageEncodingBindingElement>();

            _encoder = encoderElem.CreateMessageEncoderFactory().Encoder;

            _context = context;
            _socket = socket;
            _socketMode = socketMode;

            _onSendHandler = Send;

            _bufferManager = context.BindingParameters.Find<BufferManager>();
        }
コード例 #6
0
        private TestServer CreateServer(IReceiveFilterFactory<StringPackageInfo> receiveFilterFactory, SocketMode mode)
        {
            var appServer = new TestServer();

            var serverConfig = new ServerConfig();
            serverConfig.Ip = "127.0.0.1";
            serverConfig.Port = 2012;
            serverConfig.Mode = mode;
            serverConfig.MaxRequestLength = 40960;
            serverConfig.DisableSessionSnapshot = true;

            var setupResult = appServer.Setup(serverConfig, receiveFilterFactory, new ConsoleLoggerFactory(), null, null);

            Assert.IsTrue(setupResult);
            Assert.IsTrue(appServer.Start());

            return appServer;
        }
コード例 #7
0
        public ZMQChannelListener(BindingContext bindingContext, SocketMode socketMode)
        {
            _bindingContext = bindingContext;
            _socketMode     = socketMode;

            if (bindingContext.ListenUriMode == ListenUriMode.Explicit && bindingContext.ListenUriBaseAddress != null)
            {
                _address = new EndpointAddress(new Uri(bindingContext.ListenUriBaseAddress, bindingContext.ListenUriRelativeAddress));
            }
            else
            {
                _address = new EndpointAddress(string.Format("{0}://127.0.0.1:{1}", bindingContext.Binding.Scheme, 2020));
            }

            _onCloseHandler          = OnClose;
            _onOpenHandler           = OnOpen;
            _onWaitForChannelHandler = OnWaitForChannel;
        }
コード例 #8
0
ファイル: Attributes.cs プロジェクト: ezhiyu126/Business.Core
 public SocketAttribute(string ip = DefaultIp, int port = DefaultPort, SocketMode mode = DefaultMode, string security = DefaultSecurity, bool clearIdleSession = true, int clearIdleSessionInterval = DefaultClearIdleSessionInterval, int idleSessionTimeOut = DefaultIdleSessionTimeOut, int keepAliveInterval = DefaultKeepAliveInterval, int keepAliveTime = DefaultKeepAliveTime, int maxConnectionNumber = DefaultMaxConnectionNumber, int maxRequestLength = DefaultMaxRequestLength, int receiveBufferSize = DefaultReceiveBufferSize, int sendBufferSize = DefaultSendBufferSize, int sendingQueueSize = DefaultSendingQueueSize, int sendTimeOut = DefaultSendTimeout, int sessionSnapshotInterval = DefaultSessionSnapshotInterval, string description = DefaultDescription)
 {
     this.Ip                       = ip;
     this.Port                     = port;
     this.Mode                     = mode;
     this.Security                 = security;
     this.ClearIdleSession         = clearIdleSession;
     this.ClearIdleSessionInterval = clearIdleSessionInterval;
     this.IdleSessionTimeOut       = idleSessionTimeOut;
     this.KeepAliveInterval        = keepAliveInterval;
     this.KeepAliveTime            = keepAliveTime;
     this.MaxConnectionNumber      = maxConnectionNumber;
     this.MaxRequestLength         = maxRequestLength;
     this.ReceiveBufferSize        = receiveBufferSize;
     this.SendBufferSize           = sendBufferSize;
     this.SendingQueueSize         = sendingQueueSize;
     this.SendTimeOut              = sendTimeOut;
     this.SessionSnapshotInterval  = sessionSnapshotInterval;
     this.Description              = description;
 }
コード例 #9
0
ファイル: Program.cs プロジェクト: MinHsieh0704/SocketClient
        static void Main(string[] args)
        {
            Thread.CurrentThread.CurrentCulture   = new CultureInfo("en");
            Thread.CurrentThread.CurrentUICulture = new CultureInfo("en");

            try
            {
                LogService   = new Log();
                PrintService = new Print(LogService);

                LogService.Write("");
                PrintService.Log("App Start", Print.EMode.info);

                PrintService.Write("Mode (tcp / udp): ", Print.EMode.question);
                SocketMode mode = Console.ReadLine() == "tcp" ? SocketMode.Tcp : SocketMode.Udp;

                PrintService.Write("Server Ip: ", Print.EMode.question);
                IPAddress ip = IPAddress.Parse(Console.ReadLine());

                PrintService.Write("Server Port: ", Print.EMode.question);
                int port = Convert.ToInt32(Console.ReadLine());

                StartClient(ip, port, mode);
            }
            catch (Exception ex)
            {
                ex = ExceptionHelper.GetReal(ex);
                PrintService.Log($"App Error, {ex.Message}", Print.EMode.error);
            }
            finally
            {
                PrintService.Log("App End", Print.EMode.info);
                Console.ReadKey();

                Environment.Exit(0);
            }
        }
コード例 #10
0
ファイル: AppServer.cs プロジェクト: hooone/Infrastructure
        private bool SetupSocketServer(SocketMode mode)
        {
            try
            {
                switch (mode)
                {
                case (SocketMode.Tcp):
                    m_SocketServer = new AsyncTcpServer(this, Listeners);
                    m_SocketServer.WithLogger(this.Logger);
                    break;

                //case (SocketMode.Udp):
                //    return new UdpSocketServer<TRequestInfo>(appServer, listeners);
                default:
                    throw new NotSupportedException("Unsupported SocketMode:" + mode);
                }
                return(m_SocketServer != null);
            }
            catch (Exception e)
            {
                Logger.Error(e);
                return(false);
            }
        }
コード例 #11
0
        /// <summary>
        ///     Constructor
        /// </summary>
        /// <param name="oIpAddress">Specify ip address</param>
        /// <param name="oPortNumber">Specify port number</param>
        /// <param name="oMode">Specify mode TCP or UDP</param>
        /// <param name="oCommandSize">
        ///     Specify command size
        ///     Example: if set "n" length is "n*16" => if set 1 length is 16 then maximum command name length is 16 byte or
        ///     character
        /// </param>
        /// <param name="oBodySize">
        ///     Specify body size
        ///     Example: if set "n" length is "n*16" => if set 1 length is 16 then maximum command name length is 16 byte or character
        ///     Minimum is 1 maximum is 255
        /// </param>
        /// <param name="oEncodingAndDecoding">
        ///     Specify type of encoding and decoding
        ///     If set null adjusted default value => UTF-8
        /// </param>

        #region G9SuperSocketConfig

        public AG9BaseConfig(IPAddress oIpAddress, ushort oPortNumber, SocketMode oMode,
                             byte oCommandSize = 1, byte oBodySize = 8, G9Encoding oEncodingAndDecoding = null)
        {
            // Set ip address
            IpAddress = oIpAddress is null || Equals(oIpAddress, IPAddress.None)
                ? throw new ArgumentException(string.Format(LogMessage.ArgumentXNotCorrect, nameof(oIpAddress)), nameof(oIpAddress))
                : oIpAddress;
            // Set port number
            PortNumber = oPortNumber < 1
                ? throw new ArgumentException(string.Format(LogMessage.ArgumentXNotCorrect, nameof(oPortNumber)), nameof(oPortNumber))
                : oPortNumber;
            // Set socket mode
            Mode = oMode;
            // Set command size
            CommandSize = oCommandSize < 1
                ? throw new ArgumentException(string.Format(LogMessage.ArgumentXNotCorrect, nameof(oCommandSize)), nameof(oCommandSize))
                : oCommandSize;
            // Set body size
            BodySize = oBodySize < 1 && oBodySize > 255
                ? throw new ArgumentException(string.Format(LogMessage.ArgumentXNotCorrect, nameof(oBodySize)), nameof(oBodySize))
                : oBodySize;
            // Set encoding
            EncodingAndDecoding = oEncodingAndDecoding ?? new G9Encoding(EncodingTypes.UTF_8);
        }
コード例 #12
0
 public ZMQTransportBindingElement(string scheme, SocketMode socketMode)
 {
     _scheme     = scheme;
     _socketMode = socketMode;
 }
コード例 #13
0
        private TestServer CreateServer(IReceiveFilterFactory <StringPackageInfo> receiveFilterFactory, SocketMode mode)
        {
            var appServer = new TestServer();

            var serverConfig = new ServerConfig();

            serverConfig.Ip                     = "127.0.0.1";
            serverConfig.Port                   = 2012;
            serverConfig.Mode                   = mode;
            serverConfig.MaxRequestLength       = 40960;
            serverConfig.DisableSessionSnapshot = true;

            var setupResult = appServer.Setup(serverConfig, receiveFilterFactory, new ConsoleLogFactory(), null, null);

            Assert.IsTrue(setupResult);
            Assert.IsTrue(appServer.Start());

            return(appServer);
        }
コード例 #14
0
ファイル: ZMQBinding.cs プロジェクト: ybqwerty/MessageBus
 protected ZMQBinding(string name, SocketMode socketMode)
 {
     Name       = name;
     SocketMode = socketMode;
 }
コード例 #15
0
 /// <summary>
 ///     Constructor
 /// </summary>
 /// <param name="oIpAddress">Specify ip address</param>
 /// <param name="oPortNumber">Specify port number</param>
 /// <param name="oMode">Specify mode TCP or UDP</param>
 /// <param name="oCommandSize">
 ///     Specify command size
 ///     Example: if set "n" length is "n*16" => if set 1 length is 16 then maximum command name length is 16 byte or
 ///     character
 /// </param>
 /// <param name="oBodySize">
 ///     Specify body size
 ///     Example: if set "n" length is "n*16" => if set 1 length is 16 then maximum command name length is 16 byte or
 ///     character
 /// </param>
 /// <param name="oEncodingAndDecoding">
 ///     Specify type of encoding and decoding
 ///     If set null adjusted default value => UTF-8
 /// </param>
 public G9ClientConfig(IPAddress oIpAddress, ushort oPortNumber, SocketMode oMode, byte oCommandSize = 1,
                       byte oBodySize = 8, G9Encoding oEncodingAndDecoding = null)
     : base(oIpAddress, oPortNumber, oMode, oCommandSize, oBodySize, oEncodingAndDecoding)
 {
 }
コード例 #16
0
 public ConvenientSocket(string sIp, ushort sPort, SocketMode sMode)
 {
     this._LocalIP     = sIp;
     this._WorkingPort = sPort;
 }
コード例 #17
0
 public ZMQReplyChannel(ChannelManagerBase channelManager, BindingContext bindingContext, Context context, Socket socket, EndpointAddress address, SocketMode socketMode)
     : base(channelManager, bindingContext, context, socket, socketMode)
 {
     _address = address;
 }
コード例 #18
0
 protected ZMQDuplexChannel(ChannelManagerBase channelManager, BindingContext bindingContext, Context context, Socket socket, SocketMode socketMode, EndpointAddress address, Uri via)
     : base(channelManager, bindingContext, context, socket, socketMode)
 {
     _via = via;
     _address = address;
 }
コード例 #19
0
ファイル: ZMQInputChannel.cs プロジェクト: ronybot/MessageBus
 public ZMQInputChannel(ChannelManagerBase channelManager, BindingContext bindingContext, Context context, Socket socket, EndpointAddress address, SocketMode socketMode)
     : base(channelManager, bindingContext, context, socket, socketMode)
 {
     _address = address;
 }
コード例 #20
0
 public ZMQServerDuplexChannel(ChannelManagerBase channelManager, BindingContext bindingContext, Context context, Socket socket, SocketMode socketMode, EndpointAddress address, Uri via)
     : base(channelManager, bindingContext, context, socket, socketMode, address, via)
 {
 }
コード例 #21
0
 /// <summary>
 /// Base constructor to all socket classes.
 /// </summary>
 /// <param name="config">Configurations for this socket.</param>
 /// <param name="mode">Mode of that this socket is running in.</param>
 protected SessionHandler(TConfig config, SocketMode mode)
 {
     TimeoutTimer = new Timer(TimeoutCallback);
     Mode         = mode;
     Config       = config;
 }
コード例 #22
0
 public ZMQOutputChannel(ChannelManagerBase channelManager, BindingContext context, Socket socket, SocketMode socketMode, EndpointAddress remoteAddress, Uri via)
     : base(channelManager, context, socket, socketMode)
 {
     _via = via;
     _remoteAddress = remoteAddress;
 }
コード例 #23
0
 protected ZMQDuplexChannel(ChannelManagerBase channelManager, BindingContext bindingContext, Context context, Socket socket, SocketMode socketMode, EndpointAddress address, Uri via)
     : base(channelManager, bindingContext, context, socket, socketMode)
 {
     _via     = via;
     _address = address;
 }
コード例 #24
0
 public ZMQRequestChannel(ChannelManagerBase channelManager, BindingContext context, Socket socket, EndpointAddress address, Uri via, SocketMode socketMode)
     : base(channelManager, context, socket, socketMode)
 {
     _via = via;
     _address = address;
 }
コード例 #25
0
 public ZMQClientDuplexChannel(ChannelManagerBase channelManager, BindingContext bindingContext, Context context, Socket socket, SocketMode socketMode, EndpointAddress address, Uri via)
     : base(channelManager, bindingContext, context, socket, socketMode, address, via)
 {
 }
コード例 #26
0
 public ZMQChannelFactory(BindingContext bindingContext, SocketMode socketMode)
 {
     _bindingContext = bindingContext;
     _socketMode     = socketMode;
 }
コード例 #27
0
ファイル: ZMQBinding.cs プロジェクト: ronybot/MessageBus
 protected ZMQBinding(string name, SocketMode socketMode)
 {
     Name = name;
     SocketMode = socketMode;
 }
コード例 #28
0
 public ZMQOutputChannel(ChannelManagerBase channelManager, BindingContext context, Socket socket, SocketMode socketMode, EndpointAddress remoteAddress, Uri via)
     : base(channelManager, context, socket, socketMode)
 {
     _via           = via;
     _remoteAddress = remoteAddress;
 }
コード例 #29
0
ファイル: Program.cs プロジェクト: MinHsieh0704/SocketClient
        private static void StartClient(IPAddress ip, int port, SocketMode mode)
        {
            try
            {
                IPEndPoint   iPEnd        = new IPEndPoint(ip, port);
                SocketType   socketType   = mode == SocketMode.Tcp ? SocketType.Stream : SocketType.Dgram;
                ProtocolType protocolType = mode == SocketMode.Tcp ? ProtocolType.Tcp : ProtocolType.Udp;

                using (Socket client = new Socket(iPEnd.AddressFamily, socketType, protocolType))
                {
                    client.Connect(iPEnd);

                    EndPoint remote = client.RemoteEndPoint;

                    if (client.Connected)
                    {
                        PrintService.Log($"Server<{remote}> is connecting", Print.EMode.success);
                    }

                    using (CancellationTokenSource tokenSource = new CancellationTokenSource())
                    {
                        CancellationToken token = tokenSource.Token;

                        Task.Run(() =>
                        {
                            try
                            {
                                while (client.Connected && !token.IsCancellationRequested)
                                {
                                    string message = Console.ReadLine();
                                    if (message == "")
                                    {
                                        continue;
                                    }

                                    PrintService.Log($"Client: {message}", Print.EMode.message);

                                    byte[] byteData = Encoding.ASCII.GetBytes($"{message}\r\n");
                                    client.Send(byteData);
                                }
                            }
                            catch (Exception)
                            {
                                tokenSource.Cancel();
                            }
                        }, token);

                        try
                        {
                            while (client.Connected && !token.IsCancellationRequested)
                            {
                                byte[] bytes = new byte[1024];

                                int bytesRec = client.Receive(bytes);

                                string message = Encoding.ASCII.GetString(bytes, 0, bytesRec);
                                message = message.Replace("\n", "").Replace("\r", "");

                                if (!string.IsNullOrEmpty(message))
                                {
                                    PrintService.Log($"Server: {message}", Print.EMode.message);
                                }
                            }

                            tokenSource.Cancel();

                            client.Shutdown(SocketShutdown.Both);
                            client.Close();
                        }
                        catch (Exception)
                        {
                            tokenSource.Cancel();
                        }
                        finally
                        {
                            PrintService.Log($"Server<{remote}> was disconnected", Print.EMode.warning);
                        }
                    }
                }
            }
            catch (Exception)
            {
                throw;
            }
        }
コード例 #30
0
 public ZMQRequestChannel(ChannelManagerBase channelManager, BindingContext context, Socket socket, EndpointAddress address, Uri via, SocketMode socketMode)
     : base(channelManager, context, socket, socketMode)
 {
     _via     = via;
     _address = address;
 }
コード例 #31
0
ファイル: Program.cs プロジェクト: MinHsieh0704/SocketServer
        private static void StartClient(IPAddress ip, int port, SocketMode mode)
        {
            try
            {
                IPEndPoint   iPEnd        = new IPEndPoint(ip, port);
                SocketType   socketType   = mode == SocketMode.Tcp ? SocketType.Stream : SocketType.Dgram;
                ProtocolType protocolType = mode == SocketMode.Tcp ? ProtocolType.Tcp : ProtocolType.Udp;

                using (Socket server = new Socket(AddressFamily.InterNetwork, socketType, protocolType))
                {
                    server.Bind(iPEnd);

                    if (mode == SocketMode.Tcp)
                    {
                        server.Listen(100);

                        List <Socket> clients = new List <Socket>();

                        Task.Run(() =>
                        {
                            while (true)
                            {
                                string message = Console.ReadLine();
                                if (message == "")
                                {
                                    continue;
                                }

                                PrintService.Log($"Server: {message}", Print.EMode.message);

                                foreach (var client in clients)
                                {
                                    byte[] byteData = Encoding.ASCII.GetBytes($"{message}\r\n");
                                    client.Send(byteData);
                                }
                            }
                        });

                        while (true)
                        {
                            Socket   client = server.Accept();
                            EndPoint remote = client.RemoteEndPoint;

                            PrintService.Log($"Client<{remote}> is connecting", Print.EMode.success);

                            clients.Add(client);

                            Task.Run(() =>
                            {
                                try
                                {
                                    while (IsSocketConnected(client))
                                    {
                                        byte[] bytes = new byte[1024];

                                        int bytesRec = client.Receive(bytes);

                                        string message = Encoding.ASCII.GetString(bytes, 0, bytesRec);
                                        message        = message.Replace("\n", "").Replace("\r", "");

                                        if (!string.IsNullOrEmpty(message))
                                        {
                                            PrintService.Log($"Client<{remote}>: {message}", Print.EMode.message);
                                        }
                                    }

                                    client.Shutdown(SocketShutdown.Both);
                                    client.Close();
                                }
                                catch (Exception)
                                {
                                }
                                finally
                                {
                                    clients = clients.Where((n) => n.Handle != client.Handle).ToList();
                                    PrintService.Log($"Client<{remote}> was disconnected", Print.EMode.warning);
                                }
                            });
                        }
                    }
                    else
                    {
                        while (true)
                        {
                            EndPoint remote = new IPEndPoint(ip, port);

                            byte[] bytes = new byte[1024];

                            int bytesRec = server.ReceiveFrom(bytes, ref remote);

                            string message = Encoding.ASCII.GetString(bytes, 0, bytesRec);
                            message = message.Replace("\n", "").Replace("\r", "");

                            if (!string.IsNullOrEmpty(message))
                            {
                                PrintService.Log($"Client<{remote}>: {message}", Print.EMode.message);
                            }
                        }
                    }
                }
            }
            catch (Exception)
            {
                throw;
            }
        }
コード例 #32
0
 protected ZMQReceivingChannelBase(ChannelManagerBase channelManager, BindingContext bindingContext, Context context, Socket socket, SocketMode socketMode)
     : base(channelManager, bindingContext, socket, socketMode)
 {
     _onReceiveHandler        = Receive;
     _onTryReceiveHandler     = TryReceive;
     _onWaitForMessageHandler = WaitForMessage;
     _context = context;
 }