Example #1
0
        static void Main(string[] args)
        {
            log.Debug("--> Main");

            SocketListener listener = new SocketListener();

            IMessageFactory factory = new MessageFactoryFIX(ConfigurationManager.AppSettings["BeginString"]);

            //IMessageFactory factory = new FIX_4_2.MessageFactoryFIX();
            _factory = factory;

            IEngine engine = new SocketEngine();

            engine.MessageCacheFactory = new MessageCacheFlatFileFactory();
            engine.MessageFactory      = factory;
            engine.Initialize(
                ConfigurationManager.AppSettings["SenderCompID"], null,
                ConfigurationManager.AppSettings["TargetCompID"], null);
            engine.Received += new MessageEventHandler(engine_Received);
            engine.Sent     += new MessageEventHandler(engine_Sent);

            listener.Add(engine);

            int port = int.Parse(ConfigurationManager.AppSettings["Port"]);

            listener.Init(port);

            Console.WriteLine("press <Enter> to exit...");
            Console.ReadLine();

            listener.Dispose();
            engine.Dispose();

            log.Debug("<-- Main");
        }
Example #2
0
 void Awake()
 {
     instance    = this;
     controllers = new Dictionary <byte, ControllerBase>();
     peer        = new ClientPeer(this);
     peer.Connect("192.168.1.20", "26680");
 }
Example #3
0
 public void RegisterToSockEngine(SocketEngine sockEngine)
 {
     if (sockEngine != null)
     {
         sockEngine.Socket_OnException   = Sock_OnException;
         sockEngine.Socket_OnReceive     = Sock_OnReceive;
         sockEngine.Socket_CommException = Sock_OnCommonExcption;
     }
 }
Example #4
0
        /********************************************************************************************
         * Method:       private void btnPort_CLick(object sender, EventArgs e)
         * Purpose:      Will start listening for the socket connections and call the listener socket from the
         *             class-Socket Engine dll.
         * Parameters:   object sender,EventArgs e
         * Returns:      nothing
         * //*********************************************************************************************/
        private void buttonPort_Click(object sender, EventArgs e)
        {
            if (int.TryParse(tbPort.Text, out portNumber))
            {
                portNumber = int.Parse(tbPort.Text);
                PortNum    = portNumber;
            }
            SocketEngine.CreateListenerSocket(PortNum, new SocketEngine.delVoidStringBool(TransferToError),
                                              new SocketEngine.delVoidSocket(TransferToConnectionErrors));

            tbMessages.Text = "Started Listening to the Socket Connections";
            // btnListen.Enabled = false;
        }
Example #5
0
        public FrmMain()
        {
            InitializeComponent();

            _socketEngine                  = new SocketEngine();
            _socketEngine.CbException     += HandleException;
            _socketEngine.ConnectionBuilt += _socketEngine_ConnectionBuilt;

            ProxySocket.InitRules();
            LogHelper.CbRecordPacket += LogPacket;
            LogHelper.CbLog          += LogHelper_CbLog;
            DataManagers.Init();
            //ThreadPool.SetMaxThreads(MAX_SOCKET_SERVER_COUNT, MAX_SOCKET_SERVER_COUNT * 3);
        }
Example #6
0
        /// <summary>
        /// 依赖的网络层
        /// </summary>
        public EventCenter(HttpThread httpEngine, SocketEngine sockEngine, EntityManager entityMgr)
        {
            exchange = new Dictionary <MsgType, Action <BaseTaskAbstract> >();

            this.httpEngine = httpEngine;
            this.sockEngine = sockEngine;
            this.entityMgr  = entityMgr;

            if (httpEngine != null)
            {
                httpEngine.Http_OnException = Http_OnException;
                httpEngine.Http_OnReceive   = Http_OnReceive;
            }

            if (sockEngine != null)
            {
                sockEngine.Socket_OnException   = Sock_OnException;
                sockEngine.Socket_OnReceive     = Sock_OnReceive;
                sockEngine.Socket_CommException = Sock_OnCommonExcption;
            }
        }
Example #7
0
        //********************************************************************************************
        //Method:       private void ConnectionSucceeded(Socket connection)
        //Purpose:      Creating the connected sockets which uses
        //Parameters:   Socket connection -connected socket to the client from server
        //Returns:      nothing
        //*********************************************************************************************
        private void ConnectionSucceeded(Socket connection)
        {
            connectedSocket = new SocketEngine(connection, new SocketEngine.delVoidStringBool(TransferToError),
                                               new SocketEngine.delVoidObj(TransferToProcessObject),
                                               new SocketEngine.delVoidSocket(ErrorList));
            listClients.Add(connectedSocket);



            //Display appropriate message depending on how many connections exist
            if (listClients.Count == 1)
            {
                tbMessages.Text = "Connected to # " + listClients.Count + " client!";
            }
            else
            {
                tbMessages.Text = "Connected to- #" + listClients.Count + " clients!";
            }

            buttonPort.Enabled = false;
        }
        public void TestFixtureSetUp()
        {
            engineListen = new SocketEngine();
            engineListen.MessageCacheFactory = new MessageCacheFlatFileFactory();
            engineListen.MessageFactory      = factory;
            engineListen.AllowOfflineSend    = true;
            engineListen.Initialize("LISTEN", "CONNECT");
            engineListen.Received += new MessageEventHandler(engineListen_Received);
            engineListen.Sent     += new MessageEventHandler(engineListen_Sent);

            listener = new SocketListener();
            listener.Add(engineListen);
            listener.Init(9050);

            engineConnect = new SocketEngine();
            engineConnect.MessageCacheFactory = new MessageCacheFlatFileFactory();
            engineConnect.MessageFactory      = factory;
            engineConnect.AllowOfflineSend    = true;
            engineConnect.Initialize("CONNECT", "LISTEN");
            engineConnect.Received += new MessageEventHandler(engineConnect_Received);
            engineConnect.Sent     += new MessageEventHandler(engineConnect_Sent);
        }
Example #9
0
        public GameSocket(Socket remoteSocket) : base()
        {
            _remoteSocket = remoteSocket;

            ThreadPool.QueueUserWorkItem(e =>
            {
                while (Connected)
                {
                    try
                    {
                        var data = new byte[1024];
                        var read = _remoteSocket.Receive(data);
                        if (read > 0)
                        {
                            if (read < data.Length)
                            {
                                var tmp = new byte[read];
                                Array.Copy(data, tmp, tmp.Length);
                                ReceivePacket(tmp);
                            }
                            else
                            {
                                ReceivePacket(data);
                            }
                        }
                        else
                        {
                            break;
                        }
                    }
                    catch (Exception)
                    {
                        break;
                    }
                }

                SocketEngine.StopSocket(SocketId);
            });
        }
Example #10
0
 public static SocketEngine getInstance()
 {
     return(_engine ?? (_engine = new SocketEngine()));
 }
Example #11
0
 public NetworkEngine()
 {
     httpEngine = HttpThread.getInstance();
     SockEngine = SocketEngine.getInstance();
 }
Example #12
0
        public ProxySocket(int socketId, Socket localSocket, Socket remoteSocket)
        {
            SocketId   = socketId;
            _processes = new List <IProcesser>
            {
                new ItemProcesser(this),
                new SignProcesser(this),
                new LotteryProcesser(this),
                new PlayerProcesser(this),
                new WoodManProcesser(this),
                new PetProcesser(this),
                new PkProcesser(this)
            };
            PlayerInfo  = new PlayerInfo(this);
            WoodManInfo = new WoodManInfo(this);

            LocalSocket  = localSocket;
            RemoteSocket = remoteSocket;

            ThreadPool.QueueUserWorkItem(e =>
            {
                while (Connected)
                {
                    // if (!_isReceive)
                    // {
                    //     Thread.Sleep(50);
                    //     continue;
                    // }
                    try
                    {
                        var data = new byte[1024];
                        var read = LocalSocket.Receive(data);
                        if (read > 0)
                        {
                            DirectSendPacket(ToBuffer(data, read));
                        }
                        else
                        {
                            break;
                        }
                    }
                    catch (Exception ex)
                    {
                        if (ex is SocketException)
                        {
                        }
                        else
                        {
                            LogHelper.SilentLog(ex);
                        }
                        break;
                    }
                }

                SocketEngine.StopSocket(SocketId);
            });
            ThreadPool.QueueUserWorkItem(e =>
            {
                while (Connected)
                {
                    try
                    {
                        var data = new byte[1024];
                        var read = RemoteSocket.Receive(data);
                        if (read > 0)
                        {
                            if (read < data.Length)
                            {
                                var tmp = new byte[read];
                                Array.Copy(data, tmp, tmp.Length);
                                ReceivePacket(tmp);
                            }
                            else
                            {
                                ReceivePacket(data);
                            }
                        }
                        else
                        {
                            break;
                        }
                    }
                    catch (Exception ex)
                    {
                        if (ex is SocketException)
                        {
                        }
                        else
                        {
                            LogHelper.SilentLog(ex);
                        }
                        break;
                    }
                }

                SocketEngine.StopSocket(SocketId);
            });
        }
Example #13
0
        static void Main(string[] args)
        {
            log.Debug("--> Main");

            try
            {
                SocketLogonArgs logonArgs = new SocketLogonArgs();
                logonArgs.IPAddress = IPAddress.Parse(ConfigurationManager.AppSettings["Host"]);
                logonArgs.Port      = int.Parse(ConfigurationManager.AppSettings["Port"]);

                //set additional logon tags
                FIX4NET.FieldCollection fieldsLogon = (FIX4NET.FieldCollection)ConfigurationManager.GetSection("fixLogonFieldsSection");
                if (fieldsLogon != null)
                {
                    foreach (IField field in fieldsLogon)
                    {
                        logonArgs.AddField(field);
                    }
                }

                MessageFactoryFIX factory = new MessageFactoryFIX(ConfigurationManager.AppSettings["BeginString"]);
                //IMessageFactory factory = new FIX_4_4.MessageFactoryFIX();
                //IMessageFactory factory = new FIX_4_2.MessageFactoryFIX();
                _factory = factory;

                //additional tags for factory to append on every message
                FIX4NET.FieldCollection fields = (FIX4NET.FieldCollection)ConfigurationManager.GetSection("fixMessageFieldsSection");
                if (fields != null)
                {
                    foreach (FIX4NET.IField field in fields)
                    {
                        factory.AddField(field);
                    }
                }
                //create instance of FIX engine
                SocketEngine engine = new SocketEngine();

                //set message timeout
                string messageTimeout = ConfigurationManager.AppSettings["MessageTimeout"];
                if (!string.IsNullOrEmpty(messageTimeout))
                {
                    engine.MessageTimeout = int.Parse(messageTimeout);
                }

                //initialize FIX engine
                _engine = engine;
                _engine.MessageCacheFactory = new MessageCacheFlatFileFactory();
                _engine.MessageFactory      = factory;
                _engine.Initialize(
                    ConfigurationManager.AppSettings["SenderCompID"], ConfigurationManager.AppSettings["SenderSubID"],
                    ConfigurationManager.AppSettings["TargetCompID"], ConfigurationManager.AppSettings["TargetSubID"]);
                _engine.AllowOfflineSend = true;

                _engine.Received += new MessageEventHandler(engine_Received);
                _engine.Sent     += new MessageEventHandler(engine_Sent);

                //reset MsgSeqNum(Out)
                string resetMsgSeqNumOut = ConfigurationManager.AppSettings["ResetMsgSeqNumOut"];
                if (!string.IsNullOrEmpty(resetMsgSeqNumOut))
                {
                    _engine.ResetMsgSeqNumOut(int.Parse(resetMsgSeqNumOut));
                }

                //reset MsgSeqNum(In)
                string resetMsgSeqNumIn = ConfigurationManager.AppSettings["ResetMsgSeqNumIn"];
                if (!string.IsNullOrEmpty(resetMsgSeqNumIn))
                {
                    _engine.ResetMsgSeqNumIn(int.Parse(resetMsgSeqNumIn));
                }

                _engine.Logon(logonArgs);
                if (!_engine.IsConnected)
                {
                    throw new Exception("Logong failed");
                }

                Console.WriteLine("press <Enter> to continue...");
                Console.ReadLine();

                string sendMessageFromFile = ConfigurationManager.AppSettings["SendMessagesFromFile"];
                if (!string.IsNullOrEmpty(sendMessageFromFile))
                {
                    SendMessagesFromFile(sendMessageFromFile);
                }

                Console.WriteLine("press <Enter> to exit...");
                Console.ReadLine();

                _engine.Logout("USER LOGOUT REQUESTED");
                _engine.Dispose();
            }
            catch (Exception ex)
            {
                log.Error("Error running FIX test", ex);
            }

            log.Debug("<-- Main");
        }