Exemple #1
0
        /// <summary>
        /// 서버에 접속되어 있는 클라이언트 소켓이 닫히면 호출되는 함수
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        void server_OnClientClose(object sender, SDKNetLib.Event.AsyncSocketConnectionEventArgs e)
        {
            try
            {
                //LogMessage("server_OnClientClose[client count:" + server.ClientList.Count + "]");

                //List<IAsyncSocketClient> cList = new List<IAsyncSocketClient>();

                //cList = server.ClientList;

                //for (int i = 0; i < cList.Count; i++)
                //{
                //    if (Config.Back.Ip == cList[i].ClientId)
                //    {
                //        if (cList[i].IsConnected == true) led2.Value.AsBoolean = true;
                //    }
                //    else if (Config.Cushtion.Ip == cList[i].ClientId)
                //    {
                //        if (cList[i].IsConnected == true) led1.Value.AsBoolean = true;
                //    }
                //}
                ServerConnection = false;
                IAsyncSocketClient cList = e.ClientSocket;
#if PROGRAM_RUNNING
                server.ClientList.Remove(cList);
#endif
            }
            catch
            {
                MessageBox.Show("서버 통신에러 'server_OnClientClose'");
            }
            return;
        }
Exemple #2
0
        /// <summary>
        /// 소켓 통신 오픈 작업을 진행한다.
        /// </summary>
        /// <returns></returns>
        private bool TCPOpen()
        {
            //UDP Socket Client
            //시스템 포트 : 0~1023
            //사용자 포트 : 1024~49151
            //동적 포트   : 49152~65535

            //int Port;

            client = new AdvancedAsyncSocketClient(Encoding.UTF8.GetBytes(ETX));

            client.Connect(ClientIpAddr.IP, ClientIpAddr.Port);

            client.OnConnect += new SDKNetLib.Event.AsyncSocketConnectEventHandler(client_OnConnect);
            client.OnReceive += new SDKNetLib.Event.AsyncSocketReceiveEventHandler(client_OnReceive);
            client.OnSend    += new SDKNetLib.Event.AsyncSocketSendEventHandler(client_OnSend);
            client.OnClose   += new SDKNetLib.Event.AsyncSocketCloseEventHandler(client_OnClose);
            client.OnError   += new SDKNetLib.Event.AsyncSocketErrorEventHandler(client_OnError);

            server           = new AdvancedAsyncSocketServer(ServerIpAddr.Port, Encoding.UTF8.GetBytes(ETX));
            server.OnAccept += new SDKNetLib.Event.AsyncSocketAcceptEventHandler(server_OnAccept);
            server.OnError  += new SDKNetLib.Event.AsyncSocketErrorEventHandler(server_OnError);
            server.OnClose  += new SDKNetLib.Event.AsyncSocketCloseEventHandler(server_OnClose);

            server.OnClientReceive += new SDKNetLib.Event.AsyncSocketReceiveEventHandler(server_OnClientReceive);
            server.OnClientSend    += new SDKNetLib.Event.AsyncSocketSendEventHandler(server_OnClientSend);
            server.OnClientClose   += new SDKNetLib.Event.AsyncSocketCloseEventHandler(server_OnClientClose);
            server.OnClientError   += new SDKNetLib.Event.AsyncSocketErrorEventHandler(server_OnClientError);

            server.Listen();

            TCPComCheckFirst = mControl.공용함수.timeGetTimems();
            TCPComCheckLast  = mControl.공용함수.timeGetTimems();
            return(true);
        }
Exemple #3
0
            public void Process(INetPackage package, IAsyncSocketClient client)
            {
                ResultMessage loginResult = package.NetMessage <ResultMessage>();

                ClientMsg(loginResult.Ret == 0 ? "登录服务器成功!" : "登录服务器失败!");

                sendBigMessage();
                sendFriendsMessage();
            }
Exemple #4
0
            public void Process(INetPackage package, IAsyncSocketClient client)
            {
                UsersMessage friendsResult = package.NetMessage <UsersMessage>();

                for (var i = 0; i < friendsResult.List.Count; i++)
                {
                    UserMessage info = friendsResult.List[i];
                    ClientMsg(info.UID.ToString() + "->" + info.NickName + "->" + info.Avatar);
                }
            }
        /// <summary>
        /// 开始监听
        /// </summary>
        /// <param name="e">接收数据</param>
        /// <param name="client">客户端</param>
        public static void Listener <TPackageParse>(AsyncSocketTokenEventArgs e, IAsyncSocketClient client = null) where TPackageParse : INetPackageParse, new()
        {
            try {
                IList <INetPackage> packages = Singleton <TPackageParse> .Instance().Parse(e, AsyncSocketClientReceive.LittleEndian, AsyncSocketClientReceive.MaxPackageSize);

                if (packages == null)
                {
                    client.Disconnect();
                    if (AsyncSocketClientReceive.ErrorMsg != null)
                    {
                        AsyncSocketClientReceive.ErrorMsg.BeginInvoke("超出最大包大小:" + AsyncSocketClientReceive.MaxPackageSize.ToString() + ",连接被强行断开!", null, null);
                    }
                }
                else
                {
                    foreach (INetPackage package in packages)
                    {
                        if (package != null)
                        {
                            if (clientEvents.ContainsKey(package.Command))
                            {
                                clientEvents[package.Command].Process(package, client);
                            }
                            else if (AsyncSocketClientReceive.ErrorMsg != null)
                            {
                                AsyncSocketClientReceive.ErrorMsg.BeginInvoke(package.Command.ToString() + "指令不存在!", null, null);
                            }
                        }
                    }
                }
            } catch (Exception ex) {
                if (AsyncSocketClientReceive.ErrorMsg != null)
                {
                    AsyncSocketClientReceive.ErrorMsg.BeginInvoke(ex.Message, null, null);
                }
            }
        }
Exemple #6
0
            public void Process(INetPackage package, IAsyncSocketClient client)
            {
                LabaMessage labaResult = package.NetMessage <LabaMessage>();

                ClientMsg(labaResult.Data);
            }