/**
         *
         *
         *
         * @param session
         * @param doc
         * @param item
         */
        public void doorLoadDBTypeOK(SocketConnector session, XmlDocument doc, SessionMessage item)
        {
            //<msg t='DBS'><body action='loadDBTypeOK'>
            //<session>127.0.0.1:57107</session>
            //<DBTypeModel><mode>dz</mode><ver>X2.0</ver><sql>MySql</sql></DBTypeModel></body></msg>

            try{
                //trace(doc.ToString());

                getGameLogicServer().selectDB = DBTypeModel.fromXML(doc);


                XmlNode c = doc.SelectSingleNode("/msg/body/session");

                String userIpPort = c.InnerText;

                AppSession userSession = getGameLogicServer().netGetSession(userIpPort);

                String sAction = ServerAction.loadDBTypeOK;

                if (null != userSession)
                {
                    getGameLogicServer().Send(userSession, XmlInstruction.fengBao(sAction,
                                                                                  getGameLogicServer().selectDB.toXMLString(true)));

                    Log.WriteStrBySend(sAction, userSession.getRemoteEndPoint().ToString());
                }
            }
            catch (Exception exd)
            {
                Log.WriteStrByException(CLASS_NAME(), "doorLoadDBTypeOK", exd.Message);
            }
        }
        /**
         *
         *
         * @param session
         * @param doc
         * @param item
         */
        public void doorLoadTopListOK(SocketConnector session, XmlDocument doc, SessionMessage item)
        {
            try
            {
                //<session>127.0.0.1:64828</session><chart total_add="0" total_sub="0"></chart>
                XmlNode node = doc.SelectSingleNode("/msg/body");

                String userStrIpPort = node.ChildNodes[0].InnerText; //InnerText;


                String topListXml = node.ChildNodes[1].OuterXml; //(new XMLOutputter()).outputString(node.ChildNodes()[1]);

                //
                String saction = ServerAction.topList;

                //回复
                //注意这里的session是上面的usersession,要判断是否还在线

                AppSession userSession = this.getGameLogicServer().CLIENTAcceptor.getSession(userStrIpPort);

                //
                this.getGameLogicServer().Send(userSession, XmlInstruction.fengBao(saction, topListXml));
            }
            catch (Exception exd)
            {
                Log.WriteStrByException(CLASS_NAME(), "doorLoadTopListOK", exd.Message, exd.StackTrace);
            }
        }
        public void doorHasRegOK(SocketConnector session, XmlDocument doc, SessionMessage item)
        {
            try
            {
                XmlNode node = doc.SelectSingleNode("/msg/body");

                String userStrIpPort = node.ChildNodes[0].InnerText;        //InnerText;

                AppSession userSession = getGameLogicServer().CLIENTAcceptor.getSession(userStrIpPort);

                //
                String saction = ServerAction.hasRegOK;

                String contentXml = "";

                //如果不在线则略过发送
                getGameLogicServer().Send(userSession, XmlInstruction.fengBao(saction, contentXml));

                //
                Log.WriteStrBySend(saction, userSession.getRemoteEndPoint().ToString());
            }
            catch (Exception exd)
            {
                Log.WriteStrByException(CLASS_NAME(), "doorHasRegOK", exd.Message, exd.StackTrace);
            }
        }
Exemple #4
0
        /// <summary>
        /// 异步连接
        /// </summary>
        /// <param name="remoteEndPoint">远程网络标识</param>
        /// <param name="state">连接状态</param>
        /// <param name="cancellationToken">异步操作表示</param>
        /// <returns></returns>
        protected override async ValueTask <ConnectState> ConnectAsync(EndPoint remoteEndPoint, ConnectState state, CancellationToken cancellationToken)
        {
            var socketConnector = new SocketConnector() as IConnector;
            var proxyEndPoint   = _proxyEndPoint;

            ConnectState result;

            try
            {
                result = await socketConnector.ConnectAsync(proxyEndPoint, null, cancellationToken);

                if (!result.Result)
                {
                    return(result);
                }
            }
            catch (Exception e)
            {
                return(new ConnectState
                {
                    Result = false,
                    Exception = e
                });
            }

            return(await ConnectProxyAsync(remoteEndPoint, state, cancellationToken));
        }
Exemple #5
0
        static async Task Main(string[] args)
        {
            CommandLineArgs commandLineArgs = null;

            Parser.Default.ParseArguments <CommandLineArgs>(args)
            .WithParsed(options =>
            {
                Console.WriteLine($"Start sharing {options.Path}");
                commandLineArgs = options;
            })
            .WithNotParsed(options =>
            {
                Console.WriteLine("Error -- Path is not correct");
                Console.ReadLine();
            });

            if (commandLineArgs != null)
            {
                FileConnector.ConnectedPath = commandLineArgs.Path;
                var connector = new SocketConnector();
                await connector.StartClient(new Uri("ws://filegate.io/socket"));

                while (true)
                {
                    var command = Console.ReadLine();
                    if (command == ".exit")
                    {
                        break;
                    }
                }

                await connector.StopClient();
            }
        }
Exemple #6
0
    void Start()
    {
        SocketConnector __socket           = new SocketConnector();
        Action          __callbackFinished = delegate
        {
            Debug.Log("Socket Iniciado");
            __socket.SendData("Dados :D");
        };

        __socket.AInitialize();
        __socket.TryToConnectToSocket("127.0.0.1", 1300, __callbackFinished, null);
        //__socket.OpenAndTryToConnectToSocket("127.0.0.1", 1300, 1, 120f, true, __callbackFinished, null);
        TesteData __testeData = new TesteData();

        __testeData.listString = new List <string>();
        __testeData.listString.Add("penis");
        __testeData.listString.Add("v****a");
        __socket.SendData(JsonUtility.ToJson(__testeData));
        __socket.onSocketResponse += delegate(string p_response)
        {
            Debug.Log("Socket response: " + p_response);
            __socket.StopReadingSocketDataThread();
        };
        __socket.StartReadSocketDataThread();
        //__socket.ReadSocketData();
    }
Exemple #7
0
 Player()
 {
     isLogined    = false;
     userId       = "";
     selectedRole = -1;
     roles        = new List <Role> ();
     connector    = SocketConnector.GetInstance();
 }
        public override void Start()
        {
            SocketConnector node   = null;
            IPEndPoint      remote = new IPEndPoint(this._remote, this._port);

            //注意 这里SocketConnector的第三个参数不能是OnConnected 否则会死循环
            node = new SocketConnector("default", remote, this, base.RegisterConnection, OnDisconnected);
            node.Start();
            autoEvent.WaitOne();
        }
Exemple #9
0
        private static bool Connect()
        {
            bool result = false;

            IntelliSenseServer.Register();

            // Create a client connector which will do an initial request to the Opus ServerSocket and retrieve all available methods.
            var            socketConnector = new SocketConnector();
            MethodRegistry registry        = new MethodRegistry(socketConnector);

            // Execute the INITIALIZE function to retrieve all available functions from the client
            ResponsePayload response = socketConnector.executeFn(new FunctionPayload(SocketConnector.INITIALIZE));

            if (response != null && response.matrix != null && response.matrix.data != null)
            {
                // The inital request returns the available functions.
                // Example Message from Client:
                // { "name":"INITIALIZE",
                //   "matrix":[["getVersion",[]],["getPortfolio",[["accountSegmentId","The Account Segment Id for which the Portfolio will be fetched."]]],["getCurrencies",[]]],"error":""}
                response.matrix.data.ForEach(entry =>
                {
                    // TODO: Create a serializable Wrapper Class to do this.
                    var arguments = new List <OpuxlArgumentAttribute>();
                    // First Element is the function name
                    string functionName        = (string)entry.ElementAt(0);
                    string functionDescription = (string)entry.ElementAt(1);
                    // and second Element is an array of parameterName/parameterDescription pairs.
                    JArray argsArray = (JArray)entry.ElementAt(2);

                    foreach (JArray arg in argsArray)
                    {
                        // Create an Excel Argument for each Function Parameter.
                        arguments.Add(new OpuxlArgumentAttribute
                        {
                            Name        = arg.ElementAt(0).ToString(),
                            Description = arg.ElementAt(1).ToString(),
                            Type        = Main.ParseEnum <ExcelType>(arg.ElementAt(2).ToString()),
                            Optional    = Boolean.Parse(arg.ElementAt(3).ToString())
                        });
                    }
                    // Create a delegate in our registry for each function
                    registry.addDelegate(functionName, functionDescription, arguments);
                });
                result = true;
            }
            else
            {
                Debug.WriteLine("Response not set, cant register functions.");
            }


            // Register all retrieves functions as delegates which are going to be available in excel.
            registry.createDelegates();
            return(result);
        }
        /**
         * 每日登陆(至少玩一把)
         *
         * @param session
         * @param doc
         * @param item
         */
        public void doorChkEveryDayLoginAndGetOK(SocketConnector session, XmlDocument doc, SessionMessage item)
        {
            try
            {
                XmlNode gameNode = doc.SelectSingleNode("/msg/body/game");

                //具体奖励数额
                String gv = gameNode.Attributes["v"].Value;

                //
                XmlNode node = doc.SelectSingleNode("/msg/body/game");

                int len = node.ChildNodes.Count;

                for (int i = 0; i < len; i++)
                {
                    String edlValue = node.ChildNodes[i].Attributes["edl"].Value;

                    String id = node.ChildNodes[i].Attributes["id"].Value;

                    IUserModel u = getGameLogicServer().CLIENTAcceptor.getUserById(id);

                    if (u == null)
                    {
                        continue;
                    }

                    String userStrIpPort = u.getstrIpPort();        //node.ChildNodes()[i].getAttributeValue("session");

                    String saction = "";

                    saction = ServerAction.everyDayLoginVarsUpdate;

                    //

                    //回复
                    //注意这里的session是上面的usersession,要判断是否还在线
                    if (getGameLogicServer().CLIENTAcceptor.hasSession(userStrIpPort))
                    {
                        AppSession userSession = getGameLogicServer().CLIENTAcceptor.getSession(userStrIpPort);

                        getGameLogicServer().Send(userSession, XmlInstruction.fengBao(saction, "<edl v='" + gv + "'>" + edlValue + "</edl>"));

                        //
                        Log.WriteStrBySend(saction, userStrIpPort);
                    }
                }     //end for
            }
            catch (Exception exd)
            {
                Log.WriteStrByException(CLASS_NAME(), "doorChkEveryDayLoginAndGetOK", exd.Message);
            }
        }
 /// <summary>
 /// begin connect
 /// </summary>
 private void BeginConnect()
 {
     SocketConnector.Connect(this._endPoint).ContinueWith(c =>
     {
         if (c.IsFaulted)
         {
             TaskEx.Delay(new Random().Next(1000, 3000)).ContinueWith(_ => this.BeginConnect());
             return;
         }
         base.RegisterConnection(base.NewConnection(c.Result));
     });
 }
Exemple #12
0
        public async Task T99_Success()
        {
            var serverSocket = Utilities.CreateSocket();

            serverSocket.Bind(IPEndPoint);
            serverSocket.Listen(10);

            var socket = await SocketConnector.ConnectAsync(IPEndPoint, Logger);

            new SocketDisposer(socket, Logger).Dispose();

            serverSocket.Dispose();
        }
        static int Main(string[] args)
        {
            System.Diagnostics.Debug.WriteLine("Starting ...");
            var             server   = new SocketConnector();
            ResponsePayload response = server.executeFn(new FunctionPayload(SocketConnector.INITIALIZE));

            if (response.name.Equals(SocketConnector.INITIALIZE))
            {
                System.Diagnostics.Debug.WriteLine("Register the following methods: " + response.ToString());
            }

            return(0);
        }
        public async Task T10_Success()
        {
            var serverSocket = Utilities.CreateSocket();

            serverSocket.Bind(IPEndPoint);
            serverSocket.Listen(10);

            var socket = await SocketConnector.ConnectAsync(IPEndPoint, Logger);

            Assert.True(socket.Connected);

            socket.Close();
            serverSocket.Dispose();
        }
Exemple #15
0
 /// <summary>
 /// begin connect
 /// </summary>
 private void BeginConnect()
 {
     SocketConnector.BeginConnect(this._endPoint, this, connection =>
     {
         if (connection == null)
         {
             TaskEx.Delay(new Random().Next(1000, 3000), this.BeginConnect);
         }
         else
         {
             base.RegisterConnection(connection);
         }
     });
 }
Exemple #16
0
        /// <summary>
        /// if the socket has connected then return true else return false
        /// </summary>
        /// <returns></returns>
        public void Connect()
        {
            _connected = false;
            SocketConnector sc = new SocketConnector(ip, port);

            ThreadPool.QueueUserWorkItem(new WaitCallback(ConnectedCallBack), sc);
            if (sc.manualEvent.WaitOne(timeout, false))
            {
                if (sc.tcpClient != null)
                {
                    _client    = sc.tcpClient;
                    _connected = true;
                }
            }
        }
Exemple #17
0
        /// <summary>
        /// async connect
        /// </summary>
        /// <param name="asyncResult"></param>
        private static void ConnectedCallBack(object asyncResult)
        {
            SocketConnector sc = (SocketConnector)asyncResult;

            try
            {
                TcpClient tc = new TcpClient(sc._ip, sc._port);
                sc.tcpClient = tc;
                sc.manualEvent.Set();
            }
            catch (Exception e)
            {
                sc.manualEvent.Set();
            }
        }
        public void doorRegOK(SocketConnector session, XmlDocument doc, SessionMessage item)
        {
            try
            {
                XmlNode node = doc.SelectSingleNode("/msg/body");

                String userStrIpPort = node.ChildNodes[0].InnerText;        //InnerText;

                String usersex   = node.ChildNodes[1].InnerText;
                String username  = node.ChildNodes[2].InnerText;
                String userpwd   = node.ChildNodes[3].InnerText;
                String useremail = node.ChildNodes[4].InnerText;         //这里的mail是email

                String bbs    = node.ChildNodes[5].InnerText;
                String sid    = node.ChildNodes[6].InnerText;
                int    id_sql = parseInt(node.ChildNodes[7].InnerText);

                //
                String saction = ServerAction.regOK;

                //回复
                //注意这里的session是上面的usersession,要判断是否还在线
                AppSession userSession = getGameLogicServer().CLIENTAcceptor.getSession(userStrIpPort);

                String contentXml = "<session>" + userStrIpPort + "</session><sex>" +
                                    usersex + "</sex><nick><![CDATA[" +
                                    username + "]]></nick><pwd><![CDATA[" +
                                    userpwd + "]]></pwd><bbs><![CDATA[" +
                                    bbs + "]]></bbs>" +
                                    //"<hico><![CDATA[" + hico + "]]></hico>" +
                                    //"<sid><![CDATA[" + sid + "]]></sid>" +
                                    "<id_sql>" +
                                    id_sql.ToString() + "</id_sql>" +
                                    "<mail>" +
                                    useremail + "</mail>";


                //如果不在线则略过发送
                getGameLogicServer().Send(userSession, XmlInstruction.fengBao(saction, contentXml));

                //
                Log.WriteStrBySend(saction, userSession.getRemoteEndPoint().ToString());
            }
            catch (Exception exd)
            {
                Log.WriteStrByException(CLASS_NAME(), "doorRegOK", exd.Message);
            }
        }
Exemple #19
0
        private void OnClientDisconnectHandler(object sender, object disconnectState)
        {
            SocketConnector sc = sender as SocketConnector;

            if (sc != null)
            {
                _traffic.UnSubscribe(sc);
            }

            timerClient.Stop();

            btnConnect.Invoke((MethodInvoker) delegate { btnConnect.BackgroundImage = Properties.Resources.NotConnect1; });
            pnlFile.Invoke((MethodInvoker) delegate { pnlFile.Enabled = false; });
            pnlTools.Invoke((MethodInvoker) delegate { pnlTools.Enabled = false; });
            btnOptions.Invoke((MethodInvoker) delegate { btnOptions.Enabled = true; });
        }
Exemple #20
0
        /// <summary>
        /// create socket connection
        /// </summary>
        private void CreateSocket()
        {
            var endPoint = this._serverlist[(Interlocked.Increment(ref this._hostAcquireTimes) & 0x7fffffff) % this._serverlist.Length];

            SocketConnector.BeginConnect(endPoint, this._zkClient, connection =>
            {
                if (connection == null)
                {
                    TaskEx.Delay(new Random().Next(500, 1500), this.CreateSocket); return;
                }

                connection.Disconnected += this.OnDisconnected;
                this.FireConnected(endPoint.ToString(), connection);
                this.ConnectToZookeeper(endPoint.ToString(), connection);
            });
        }
        public void doorLoadGOK(SocketConnector session, XmlDocument doc, SessionMessage item)
        {
            try
            {
                XmlNode node = doc.SelectSingleNode("/msg/body");

                String userStrIpPort = node.ChildNodes[0].InnerText; //InnerText;

                String g = node.ChildNodes[1].InnerText;             //InnerText;

                String id_sql = node.ChildNodes[1].Attributes["id_sql"].Value;
                //
                String saction = ServerAction.gOK;

                //回复
                //注意这里的session是上面的usersession,要判断是否还在线
                AppSession userSession = getGameLogicServer().netGetSession(userStrIpPort);

                //如果不在线则略过发送
                if (null != userSession)
                {
                    IUserModel u = getGameLogicServer().CLIENTAcceptor.getUser(userStrIpPort);

                    //以免引发不必要的异常,方便测试
                    if (!(g == ""))
                    {
                        u.setG(parseInt(g));
                    }

                    getGameLogicServer().Send(userSession, XmlInstruction.fengBao(saction,
                                                                                  "<g " + "id_sql='" + id_sql + "'" + ">" + g + "</g>"));

                    //
                    Log.WriteStrBySend(saction, userSession.getRemoteEndPoint().ToString());
                }
                else
                {
                    Log.WriteStrBySendFailed(saction, userSession.getRemoteEndPoint().ToString());
                }         //end if
            }
            catch (Exception exd)
            {
                Log.WriteStrByException(CLASS_NAME(), "doorLoadGOK", exd.Message);
            }
        }
        public void doorNeedProof(SocketConnector session, XmlDocument doc, SessionMessage item)
        {
            try
            {
                String saction = ServerAction.hasProof;

                //回复
                session.Write(
                    XmlInstruction.DBfengBao(saction, "<proof>" + getGameLogicServer().RCConnector.getProof() + "</proof>")
                    );

                //
                Log.WriteStrBySend(saction, session.getRemoteEndPoint().ToString());
            }
            catch (Exception exd)
            {
                Log.WriteStrByException(CLASS_NAME(), "doorNeedProof", exd.Message, exd.StackTrace);
            }
        }
        public void doorRegKO(SocketConnector session, XmlDocument doc, SessionMessage item)
        {
            try
            {
                XmlNode node = doc.SelectSingleNode("/msg/body");

                String userStrIpPort = node.ChildNodes[0].InnerText;

                String status = node.ChildNodes[1].InnerText;

                String param = node.ChildNodes[2].InnerText;

                //
                String saction = ServerAction.regKO;

                //回复
                //注意这里的session是上面的usersession,要判断是否还在线
                AppSession userSession = getGameLogicServer().CLIENTAcceptor.getSession(userStrIpPort);

                //如果不在线则略过发送
                if (null != userSession)
                {
                    //if (userSession.getConnected())
                    //{
                    getGameLogicServer().Send(userSession, XmlInstruction.fengBao(saction, "<status>" + status + "</status><p>" + param + "</p>"));

                    //
                    Log.WriteStrBySend(saction, userSession.getRemoteEndPoint().ToString());
                    //} //end if
                }
                else
                {
                    Log.WriteStrBySendFailed(saction, userSession.getRemoteEndPoint().ToString());
                }         //end if
            }
            catch (Exception exd)
            {
                Log.WriteStrByException(CLASS_NAME(), "doorRegKO", exd.Message);
            }
        }
Exemple #24
0
        protected override async ValueTask <ConnectState> ConnectAsync(EndPoint remoteEndPoint, ConnectState state, CancellationToken cancellationToken)
        {
            var socketConnector = new SocketConnector() as IConnector;
            var proxyEndPoint   = _proxyEndPoint;

            ConnectState result;

            try
            {
                result = await socketConnector.ConnectAsync(proxyEndPoint, null, cancellationToken);

                if (!result.Result)
                {
                    return(result);
                }
            }
            catch (Exception e)
            {
                return(new ConnectState
                {
                    Result = false,
                    Exception = e
                });
            }

            var channel = result.CreateChannel <HttpRequest>(new HttpPipelineFilter(), new ChannelOptions());

            // send request
            //channel.SendAsync();

            await foreach (var p in channel.RunAsync())
            {
                // validating response
            }

            await channel.DetachAsync();

            return(result);
        }
Exemple #25
0
        static void Main(string[] args)
        {
            try
            {
                //设置控制台的显示样式
                Console.ForegroundColor = ConsoleColor.Green;
                //Console.ResetColor();
                //Console.Clear();

                //copy right
                Console.WriteLine("wdmir.com   2003-2015");
                Console.WriteLine("www.silverFoxServer.net 2009-2015");

                //语言
                //mono不支持Culture
                //"zh-CN";
                GameGlobals.lang = System.Globalization.CultureInfo.InstalledUICulture.Name;

                //test
                //GameGlobals.lang = "zh-HK";

                SR.init(GameGlobals.lang);

                //3.1版本 - 澳门风云
                Console.Title = SR.GetString(SR.Win_Title, SR.Ddz_displayName, "3.2", "2015/8/28");//"2014/2/10");

                if (args.Length > 0 && args[0] == "nowin")
                {
                    IntPtr ParenthWnd = new IntPtr(0);
                    IntPtr et         = new IntPtr(0);
                    ParenthWnd = FindWindow(null, Console.Title);

                    ShowWindow(ParenthWnd, 0);//隐藏本dos窗体, 0: 后台执行;1:正常启动;2:最小化到任务栏;3:最大化
                }

                //
                GameGlobals.GAME_NAME = GAME_NAME;

                //Console.WriteLine("[Boot] " + Globals.svrName + " Server");

                Console.WriteLine(

                    SR.GetString(SR.BootSvr, SR.Ddz_displayName)

                    );

                //读取xml配置
                XmlDocument configDoc = new XmlDocument();

                //获取和设置当前目录(即该进程从中启动的目录)的完全限定路径。
                //string str = System.Environment.CurrentDirectory;
                //该程序如果由另一程序启动,则会有问题,获得的是另一程序的启动路径

                //
                string appFileName = System.AppDomain.CurrentDomain.FriendlyName.ToLower();
                //Console.WriteLine(appName);

                string configFileName = string.Empty;

                configFileName = "DdzServerConfig.xml";

                //if (appFileName.IndexOf(".vshost.exe") >= 0)
                //{
                //    configFileName = "DdzServerConfig.xml";

                //}
                //else if (appFileName == "ddzserver.exe")
                //{
                //    configFileName = "DdzServerConfig.xml";

                //}
                //else if (appFileName == "ddzserver2.exe")
                //{
                //    configFileName = "DdzServerConfig2.xml";

                //}
                //else if (appFileName == "ddzserver3.exe")
                //{
                //    configFileName = "DdzServerConfig3.xml";

                //}

                //
                //Console.WriteLine("[Load File] " + System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase + configFileName);

                Console.WriteLine(

                    SR.GetString(SR.LoadFile,
                                 System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase + configFileName)

                    );


                configDoc.Load(System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase + configFileName);


                //IP信息
                XmlNode node = configDoc.SelectSingleNode("/www.wdmir.net/group/main-server");

                if (null == node)
                {
                    Console.ForegroundColor = ConsoleColor.Red;
                    Console.WriteLine(SR.GetString(SR.Can_not_find_node, "/www.wdmir.net/group/main-server"));
                    Console.ForegroundColor = ConsoleColor.Green;
                }

                string ipAdr = node.ChildNodes[0].InnerText;

                int port = int.Parse(node.ChildNodes[1].InnerText);

                //房间信息
                XmlNode tabNode = configDoc.SelectSingleNode("/www.wdmir.net/group/main-server/tabList");

                //
                int tabNum = tabNode.ChildNodes.Count;
                List <ITabModel> tabList = new List <ITabModel>();


                int k = 0;
                //房间名字
                int j = 0;

                //ChildNodes
                int index = 0;

                for (k = 0; k < tabNum; k++)
                {
                    TabModelByDdz Tab = (TabModelByDdz)TabModelFactory.Create(k);

                    //房间数量负数没有意义
                    XmlNode e = tabNode.ChildNodes[index];

                    Tab.setTabName(e.Attributes["n"].Value);

                    int size = e.ChildNodes.Count;    //e.getChildren().size();

                    Tab.setRoomCount(size);

                    //房间底分

                    Tab.setRoomG(Convert.ToInt32(e.Attributes["g"].Value));

                    //最少携带不需要警告
                    Tab.setRoomCarryG(Convert.ToInt32(e.Attributes["carryG"].Value));

                    //每局花费
                    Tab.setRoomCostG(float.Parse(e.Attributes["costG"].Value));

                    //自动匹配模式开启
                    Tab.setTabAutoMatchMode(Convert.ToInt32(e.Attributes["autoMatchMode"].Value));

                    //快速场模式开启
                    Tab.setQuickMode(Convert.ToInt32(e.Attributes["quickMode"].Value));

                    //自动匹配根据Logic设计规则,至少需要2个房间,
                    //否则只有1个房间,换房间时会进入无限等待
                    if (1 == Tab.getTabAutoMatchMode() && 1 == Tab.getRoomCount())
                    {
                        Console.WriteLine(SR.GetString(SR.getRoom_auto_match_mode_and_room_num_less_2(), "Tab " + index.ToString()));
                    }

                    int roomCount = Tab.getRoomCount();
                    for (j = 0; j < roomCount; j++)
                    {
                        Tab.getRoomName()[j] = e.ChildNodes[j].Attributes["n"].Value;

                        //e.getChildren().get(j).getAttributeValue("n");
                    }

                    //check
                    //
                    if (0 >= Tab.getRoomCount())
                    {
                        Console.WriteLine(SR.GetString(SR.getRoom_num_zero(), "Tab " + index.ToString()));
                    }

                    if (1 <= Tab.getRoomCostG())
                    {
                        Console.WriteLine(SR.GetString(SR.getRoom_costG_more_than_1(), "Tab " + index.ToString()));
                        Tab.setRoomCostG(0.0f);
                    }

                    //
                    tabList.Add(Tab);

                    index++;
                }



                //安全域
                string allowAccessFromDomain = node.ChildNodes[4].InnerText;

                if ("" == allowAccessFromDomain)
                {
                    allowAccessFromDomain = "*";
                }

                //是否允许负分
                string allowPlayerGlessThanZeroOnGameOverStr = node.ChildNodes[5].InnerText;

                bool allowPlayerGlessThanZeroOnGameOver = false;

                if ("no" == allowPlayerGlessThanZeroOnGameOverStr.ToLower())
                {
                    allowPlayerGlessThanZeroOnGameOver = false;
                    //Console.WriteLine("提示:游戏扣分时会出现负分已关闭");

                    Console.WriteLine(SR.GetString(SR.Allow_playerG_less_than_zero_on_game_over));
                }
                else
                {
                    allowPlayerGlessThanZeroOnGameOver = true;
                }

                //打印级别
                int logLevel = int.Parse(node.ChildNodes[6].InnerText);

                if (0 == logLevel)
                {
                    GameGlobals.logLvl = LoggerLvl.CLOSE0;
                }
                else if (1 == logLevel)
                {
                    GameGlobals.logLvl = LoggerLvl.NORMAL1;
                }
                else
                {
                    logLevel           = 2;
                    GameGlobals.logLvl = LoggerLvl.ALL2;
                }

                //
                Log.init(GameGlobals.GAME_NAME, GameGlobals.logLvl);

                //cost扣下来的钱存入指定帐号
                string costUser = node.ChildNodes[7].InnerText;

                if ("" == costUser)
                {
                    costUser = "******";
                    //Console.WriteLine("提示:未指定每局花费的存入帐号,默认设为admin");
                    Console.WriteLine(
                        SR.GetString(SR.Cost_default_set_to_admin)
                        );
                }

                //
                string payUser = GameGlobals.payUser = node.ChildNodes[8].InnerText;

                //
                int runAwayMultiG = Convert.ToInt32(node.ChildNodes[9].InnerText);

                int reconnectionTime = Convert.ToInt32(node.ChildNodes[10].InnerText);

                //15秒是快牌场的的出牌时间
                if (reconnectionTime < 30)
                {
                    Console.WriteLine(SR.Room_reconnection_time_less_than_15);
                    reconnectionTime = 30;
                }

                int everyDayLogin = Convert.ToInt32(node.ChildNodes[11].InnerText);

                //其它模块
                XmlNode omNode = configDoc.SelectSingleNode("/www.wdmir.net/group/main-server/other-modules/turn-over-a-card");

                if (null == omNode)
                {
                    Console.ForegroundColor = ConsoleColor.Red;
                    Console.WriteLine(SR.GetString(SR.Can_not_find_node, "/www.wdmir.net/group/main-server/other-modules/turn-over-a-card"));
                    Console.ForegroundColor = ConsoleColor.Green;
                }

                int turnOver_a_Card_module_run = Convert.ToInt32(omNode.Attributes["run"].Value);

                Int64 turnOver_a_Card_module_g1 = Convert.ToInt64(omNode.Attributes["g1"].Value);
                Int64 turnOver_a_Card_module_g2 = Convert.ToInt64(omNode.Attributes["g2"].Value);
                Int64 turnOver_a_Card_module_g3 = Convert.ToInt64(omNode.Attributes["g3"].Value);

                float turnOver_a_Card_costG = float.Parse(omNode.Attributes["costG"].Value);

                if (0 == turnOver_a_Card_module_run)
                {
                    //关闭
                }
                else
                {
                    Console.WriteLine(

                        SR.GetString(SR.LoadModulesAndStart,
                                     SR.TurnOver_a_Card_module_displayName
                                     )

                        );
                }

                //
                if (0 >= turnOver_a_Card_module_g1)
                {
                    Console.WriteLine(SR.GetString(SR.TurnOver_a_Card_module_g_zero, "g1"));
                }

                if (0 >= turnOver_a_Card_module_g2)
                {
                    Console.WriteLine(SR.GetString(SR.TurnOver_a_Card_module_g_zero, "g2"));
                }

                if (0 >= turnOver_a_Card_module_g3)
                {
                    Console.WriteLine(SR.GetString(SR.TurnOver_a_Card_module_g_zero, "g3"));
                }

                //
                XmlNode rcNode = configDoc.SelectSingleNode("/www.wdmir.net/group/main-server/record-server");

                if (null == rcNode)
                {
                    Console.ForegroundColor = ConsoleColor.Red;
                    Console.WriteLine(SR.GetString(SR.getCan_not_find_node(), "/www.wdmir.net/group/main-server/record-server"));
                    Console.ForegroundColor = ConsoleColor.Green;
                }

                String connect_ipAdr2 = rcNode.ChildNodes[0].InnerText;
                int    connect_port2  = Convert.ToInt32(rcNode.ChildNodes[1].InnerText);
                String proof          = rcNode.ChildNodes[2].InnerText;

                //Console.WriteLine("[Load File] OK");

                Console.WriteLine(SR.GetString(SR.getLoadFileSuccess()));

                //读取聊天过滤字符配置
                XmlDocument filterWordDoc = new XmlDocument();

                //Console.WriteLine("[Load File] " + System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase + "FilterWordConfig.xml");

                Console.WriteLine(

                    SR.GetString(SR.LoadFile,
                                 System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase + "FilterWordConfig.xml")

                    );


                filterWordDoc.Load(System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase + "FilterWordConfig.xml");

                XmlNode filterLvl = filterWordDoc.SelectSingleNode("/www.wdmir.net/pubmsg-filter-level");

                if (null == filterLvl)
                {
                    Console.ForegroundColor = ConsoleColor.Red;
                    Console.WriteLine(SR.GetString(SR.getCan_not_find_node(), "/www.wdmir.net/pubmsg-filter-level"));
                    Console.ForegroundColor = ConsoleColor.Green;
                }

                XmlNode filterNode = filterWordDoc.SelectSingleNode("/www.wdmir.net/pubmsg-filter-word");

                if (null == filterNode)
                {
                    Console.ForegroundColor = ConsoleColor.Red;
                    Console.WriteLine(SR.GetString(SR.getCan_not_find_node(), "/www.wdmir.net/pubmsg-filter-word"));
                    Console.ForegroundColor = ConsoleColor.Green;
                }

                XmlNode filterMakeupNode = filterWordDoc.SelectSingleNode("/www.wdmir.net/pubmsg-filter-makeup-word");

                if (null == filterNode)
                {
                    Console.ForegroundColor = ConsoleColor.Red;
                    Console.WriteLine(SR.GetString(SR.getCan_not_find_node(), "/www.wdmir.net/pubmsg-filter-makeup-word"));
                    Console.ForegroundColor = ConsoleColor.Green;
                }


                FilterWordManager.init(
                    filterLvl.ChildNodes[0].InnerText,
                    filterNode.ChildNodes[0].InnerText,
                    filterMakeupNode.ChildNodes[0].InnerText);


                Console.WriteLine(
                    SR.GetString(SR.LoadFileSuccess)
                    );

                //处理类初始化
                //处理类初始化
                DdzLogic.getInstance().init(tabNode, tabList, costUser, allowPlayerGlessThanZeroOnGameOver, runAwayMultiG, reconnectionTime, everyDayLogin);
                //模块初始化
                DdzLogic.getInstance().init_modules(costUser, turnOver_a_Card_module_run, turnOver_a_Card_module_g1, turnOver_a_Card_module_g2, turnOver_a_Card_module_g3, turnOver_a_Card_costG);

                DdzRCLogic.getInstance().init(DdzLogic.getInstance());

                //
                DdzLPU.init();

                //如果是连接DB的Connector,可能需要设置证书
                SocketConnector connector = new SocketConnector(proof);

                connector.setHandler(new DdzRCClientHandler());

                //与数据库的连接bufSize要大点
                //默认的1024 * 8
                connector.getSessionConfig().setReadBufferSize(1024 * 4);


                //使用了reuse,现半小时调为0
                connector.getSessionConfig().setReceiveTimeout(0);


                //
                SocketAcceptor acceptor = new SocketAcceptor(payUser, GAME_NAME, allowAccessFromDomain, true);

                acceptor.setHandler(new DdzGameClientHandler());


                //处理类引用connector
                //只可调用connector的send方法
                DdzLogic.getInstance().setRCConnector(connector);
                DdzLogic.getInstance().setClientAcceptor(acceptor);

                //首先启动对内网的数据库服务的连接
                connector.connect("127.0.0.1", 9500);

                //最后启动外网侦听
                acceptor.bind("Any", port, false);

                //对于post builder,这里要加ReadLine
                string line;
                while ((line = Console.ReadLine()) != SR.Shutdown)
                {
                    if (null == line)
                    {
                        //break;
                    }
                    else if (line == "shutdown")
                    {
                        break;
                    }
                    else if (line == "clear")
                    {
                        Console.Clear();
                    }
                    else if (line == "port")
                    {
                        Console.WriteLine(port);
                    }
                    else
                    {
                        Console.WriteLine("unknow command");
                    }

                    //Console.WriteLine("run command:" + line);
                }

                //Console.ReadLine();
            }
            catch (Exception exd)
            {
                Console.ForegroundColor = ConsoleColor.Red;

                Console.WriteLine(SR.GetString(SR.Game_svr_start_failed, exd.Message));
                Console.ForegroundColor = ConsoleColor.Green;

                Console.WriteLine(SR.GetString(SR.Game_svr_failed_help));

                Console.WriteLine("email:[email protected]");

                Console.ReadLine();
            }
        }
Exemple #26
0
        public async Task T03_Timeout()
        {
            var e = await Assert.ThrowsAsync <SocketException>(async() => await SocketConnector.ConnectAsync(IPEndPoint, Logger, 1));

            Assert.Equal((int)SocketError.TimedOut, e.ErrorCode);
        }
Exemple #27
0
 public async Task T04_Cancellation()
 {
     var ct = new CancellationToken(true);
     await Assert.ThrowsAsync <OperationCanceledException>(async() =>
                                                           await SocketConnector.ConnectAsync(IPEndPoint, Logger, -1, ct));
 }
Exemple #28
0
 public MethodRegistry(SocketConnector connector) : this()
 {
     this.connector = connector;
 }
 public override void Start()
 {
     SocketConnector node = null;
     IPEndPoint remote = new IPEndPoint(this._remote, this._port);
     //注意 这里SocketConnector的第三个参数不能是OnConnected 否则会死循环
     node = new SocketConnector("default", remote, this, base.RegisterConnection, OnDisconnected);
     node.Start();
     autoEvent.WaitOne();
 }
Exemple #30
0
 /// <summary>
 /// if the socket has connected then return true else return false
 /// </summary>
 /// <returns></returns>
 public void Connect()
 {
     _connected = false;
     SocketConnector sc = new SocketConnector(ip, port);
     ThreadPool.QueueUserWorkItem(new WaitCallback(ConnectedCallBack), sc);
     if (sc.manualEvent.WaitOne(timeout, false))
     {
         if (sc.tcpClient != null)
         {
             _client = sc.tcpClient;
             _connected = true;
         }
     }
 }
 public void doorProofKO(SocketConnector session, XmlDocument doc, SessionMessage item)
 {
     Log.WriteStr(SR.GetString(SR.getcert_vali_ko(), session.getRemoteEndPoint().ToString()));
 }
 public virtual void doorLogOK(SocketConnector session, XmlDocument doc, SessionMessage item)
 {
     //need override
 }