Esempio n. 1
0
    /// <summary>
    /// parse input data
    /// </summary>
    /// <param name="url"></param>
    /// <param name="callback"></param>
    /// <param name="ud"></param>
    public void SocketRequest(int actionId, INetCallback callback, object userData, bool bShowLoading)
    {
        if (mSocket == null)
        {
            string strUrl = NetWriter.GetUrl();
            Debug.Log("url" + strUrl);
            string[] arr   = strUrl.Split(new char[] { ':' });
            int      nPort = int.Parse(arr[1]);
            mSocket = new SocketConnect(arr[0], nPort);
        }
        NetWriter writer = NetWriter.Instance;

        writer.writeInt32("actionId", actionId);
        byte[]        data    = NetWriter.Instance.PostData();
        SocketPackage package = new SocketPackage();

        package.FuncCallback = callback;
        package.UserData     = userData;
        package.MsgId        = NetWriter.MsgId - 1;
        package.ActionId     = actionId;
        package.HasLoading   = bShowLoading;
        package.SendTime     = DateTime.Now;
        NetWriter.resetData();

        if (bShowLoading)
        {
            RequestDelegate(Status.eStartRequest);
        }
        mSocket.Request(data, package);
    }
Esempio n. 2
0
 private void StartSocket(string host, string port)
 {
     if (_socket == null)
     {
         _socket = new SocketConnect(host, int.Parse(port));
     }
 }
Esempio n. 3
0
        private async Task <string> readLine()
        {
            SocketConnect.ReceiveBufferSize = BlockSize;
            var content = new StringBuilder();
            var buffers = new byte[BlockSize];

            while (true)
            {
                var i = SocketConnect.Receive(buffers);
                content.Append(Encoding.UTF8.GetString(buffers));
                if (i < BlockSize)
                {
                    break;
                }
            }
            Content = content.ToString();
            content.Clear();
            var args = Content.Split('\n');

            if (args.Length > 2)
            {
                Content = args[args.Length - 2];
            }
            else
            {
                Content = args[0];
            }
            if (Content.Substring(3, 1).Equals(""))
            {
                return(await readLine());
            }
            return(Content);
        }
Esempio n. 4
0
 public void close()
 {
     getMSGFlag = false;
     mySocket.Close();
     st = null;
     //thread.Abort();
 }
Esempio n. 5
0
    /// <summary>
    /// parse input data
    /// </summary>
    /// <param name="gameAction"></param>
    /// <param name="actionParam"></param>
    /// <param name="formater"></param>
    /// <param name="bShowLoading"></param>
    private void SocketRequest(GameAction gameAction, ActionParam actionParam, IHeadFormater formater, bool bShowLoading)
    {
        if (mSocket == null)
        {
            string   strUrl = NetWriter.GetUrl();
            string[] arr    = strUrl.Split(new char[] { ':' });
            int      nPort  = int.Parse(arr[1]);
            mSocket = new SocketConnect(arr[0], nPort, formater);
        }
        gameAction.Head.MsgId = NetWriter.MsgId - 1;

        SocketPackage package = new SocketPackage();

        package.MsgId      = gameAction.Head.MsgId;
        package.ActionId   = gameAction.ActionId;
        package.Action     = gameAction;
        package.HasLoading = bShowLoading;
        package.SendTime   = DateTime.Now;
        byte[] data = gameAction.Send(actionParam);
        NetWriter.resetData();
        if (bShowLoading)
        {
            RequestDelegate(Status.eStartRequest);
        }
        mSocket.Send(data, package);
    }
Esempio n. 6
0
    /// <summary>
    /// parse input data
    /// </summary>
    /// <param name="gameAction"></param>
    /// <param name="actionParam"></param>
    /// <param name="formater"></param>
    /// <param name="bShowLoading"></param>
    private void SocketRequest(GameAction gameAction, Google.Protobuf.IMessage pbData, IHeadFormater formater, bool bShowLoading)
    {
        if (mSocket == null)
        {
            string   url = NetWriter.GetUrl();
            string[] arr = url.Split(new char[] { ':' });
            if (arr.Length != 2)
            {
                Debug.LogError("Url is error:" + url);
                return;
            }
            int nPort = int.Parse(arr[1]);
            mSocket = new SocketConnect(arr[0], nPort, formater);
        }
        gameAction.Head.MsgId = NetWriter.MsgId - 1;

        SocketPackage package = new SocketPackage();

        package.MsgId        = gameAction.Head.MsgId;
        package.ActionId     = gameAction.ActionId;
        package.ActionRespId = gameAction.Head.ActionRespId;
        package.Action       = gameAction;
        package.HasLoading   = bShowLoading;
        package.SendTime     = DateTime.Now;
        byte[] data = gameAction.Send(pbData);
        NetWriter.resetData();
        if (bShowLoading)
        {
            RequestDelegate(Status.eStartRequest);
        }
        mSocket.Send(data, package);
    }
Esempio n. 7
0
        /// <summary>
        /// 客户端连接事件
        /// </summary>
        void onSocketConnect(Guid connId, SocketAsyncEventArgs e)
        {
            var userSocket = new UserSocketEventArgs(e);

            dicSocketEventArgs.AddOrUpdate(connId, userSocket, (id, t) => { return(userSocket); });
            SocketConnect?.Invoke(connId);
        }
Esempio n. 8
0
 // Update is called once per frame
 void Update()
 {
     if (Input.GetMouseButton(0))
     {
         startTime = Time.time;
     }
     ASName = SceneManager.GetActiveScene().name;
     //没有处在第一场景并且10秒之内没有反应
     if (ASName != "FirstScene" && ((Time.time - startTime) > 10.0f))
     {
         //如果提交之后
         if (NetworkData.isSubmit)
         {
             Debug.Log("TimeSceneControl" + "Update");
             //发送断开连接信号
             SocketConnect.getSocketInstance().SendInt(NetworkData.SENDDISCONNECT);
             SocketConnect.getSocketInstance().close();
             //结束展示
             NetworkData.isSubmit = false;
         }
         //卸载当前场景
         SceneManager.UnloadSceneAsync(SceneManager.GetActiveScene());
         //加载第一场景
         SceneManager.LoadScene("FirstScene");
     }
 }
Esempio n. 9
0
 public void Close()
 {
     if (mSocket != null)
     {
         mSocket.Close();
         mSocket = null;
     }
 }
Esempio n. 10
0
        public async Task <int> Send(string command)
        {
            var buffers = Encoding.UTF8.GetBytes(command + "\r\n");

            SocketConnect.SendBufferSize = buffers.Length;
            SocketConnect.Send(buffers);
            return(await readReply());
        }
Esempio n. 11
0
 //单例模式
 public static SocketConnect getSocketInstance()//获取SocketText对象
 {
     if (st == null)
     {
         st = new SocketConnect();
     }
     return(st);
 }
Esempio n. 12
0
        /// <summary>
        /// 浏览器tcp转发
        /// </summary>
        /// <param name="client"></param>
        private async Task TcpHandlerAsync(ConnectionContext browser)
        {
            try
            {
                //browser-->5,1,0
                var firstPack = (await browser.Transport.Input.ReadAsync()).Buffer;
                if (string.Join(",", firstPack.ToArray()) != "5,1,0")
                {
                    throw new Exception("proxy handshake faild");
                }

                browser.Transport.Input.AdvanceTo(firstPack.GetPosition(firstPack.Length));

                //server-->5,0
                //发5 0 回到浏览器
                await browser.Transport.Output.WriteAsync(new byte[] { 5, 0 });

                //browser-->address port
                var secondPack = (await browser.Transport.Input.ReadAsync()).Buffer;
                if (!Socket5Utility.TryParse(secondPack.ToArray(), out var socket5Result))
                {
                    throw new Exception("parse socket5 proxy infomation faild");
                }

                browser.Transport.Input.AdvanceTo(secondPack.GetPosition(secondPack.Length));

                await using SocketConnect target = new SocketConnect();
                await target.ConnectAsync(remoteAddress, remotePort, System.Text.Encoding.UTF8.GetString(socket5Result.Address), socket5Result.Port);

                logger.LogInformation($"连接到{System.Text.Encoding.UTF8.GetString(socket5Result.Address)}:{socket5Result.Port}");

                Task taskRecvBrowser = Task.Run(async() =>
                {
                    //获取浏览器数据
                    await foreach (var browserData in GetRecvDataAsync(browser))
                    {
                        //发送数据到服务器
                        await target.SendAsync(browserData);
                    }
                });

                Task taskRecvServer = Task.Run(async() =>
                {
                    //接收服务器数据
                    await foreach (var browserData in target.hubConnection.StreamAsync <byte[]>("GetTargetServerData"))
                    {
                        //发送数据到浏览器
                        await browser.Transport.Output.WriteAsync(browserData);
                    }
                });

                await Task.WhenAll(taskRecvBrowser, taskRecvServer);
            }
            catch (Exception ex)
            {
                logger.LogError(ex, $"处理TcpHandlerAsync出现错误:{ex.InnerException?.Message ?? ex.Message}");
            }
        }
Esempio n. 13
0
 public void AddEvent(SocketConnect.ClientEvent e)
 {
     if (e != null)
     {
         lock (this.events)
         {
             this.events.Enqueue(e);
         }
     }
 }
Esempio n. 14
0
 private void OnApplicationQuit()
 {
     Debug.Log("退出程序连接");
     //程序退出时关闭连接
     if (SocketConnect.getSocketInstance() != null)
     {
         Debug.Log("OnApplicationQuit");
         SocketConnect.getSocketInstance().close();
     }
 }
Esempio n. 15
0
    public bool StopService()
    {
        serviceState = ENetServiceState.Stop;

        if (_socketCon != null)
        {
            _socketCon.Close();
            _socketCon = null;
        }

        return(true);
    }
Esempio n. 16
0
    //关闭连接
    public void Close()
    {
        setNetStatus(2);

        if (_socketCon != null)
        {
            _socketCon.Close();
            _socketCon = null;
        }

        SendreceiveManage.getInstance().clear();
    }
Esempio n. 17
0
    //关闭连接
    public void Close()
    {
        setNetStatus(2);

        if (_socketCon != null)
        {
            _socketCon.Close();
            _socketCon = null;
        }

        MessageQueueManage.getInstance().clearData();
    }
Esempio n. 18
0
    //关闭连接
    public void Close()
    {
        setNetStatus(2);

        if (_socketCon != null)
        {
            _socketCon.Close();
            _socketCon = null;
        }

        recDataQueue.Clear();
        sendMemory.Clear();
        pbnoCurr.setNull();
    }
Esempio n. 19
0
 private void ConnectGuns()
 {
     BGuns.ToList().ForEach(g => {
         string ip                                = g.IP;
         int port                                 = g.Port;
         socket                                   = new SocketConnect(ip, port);
         socket.EventConnected                   += Socket_EventConnected;
         socket.EventCommunicationed             += Socket_EventCommunicationed;
         socket.EventTighteningResultSubscribe   += Socket_EventTighteningResultSubscribe;
         socket.EventTighteningResultRecived     += Socket_EventTighteningResultRecived;
         socket.EventTighteningResultNoSubscribe += Socket_EventTighteningResultNoSubscribe;;
         socket.EventDisConnected                += Socket_EventDisConnected;
         g.connect                                = socket;
         socket.Start();
     });
 }
Esempio n. 20
0
 void RotateModel(float moveX, float moveY)
 {
     moveX /= 5.0f; Move_Y /= 10.0f;
     up     = model.worldToLocalMatrix * model.up;
     right  = model.worldToLocalMatrix * model.right;
     model.Rotate(up, -moveX, Space.World);
     model.Rotate(right, moveY, Space.World);
     if (NetworkData.isSubmit)
     {
         Debug.Log("RotateModel");
         //发送数据
         SocketConnect.getSocketInstance().SendInt(NetworkData.SENDROTATION);
         SocketConnect.getSocketInstance().SendFloat(model.eulerAngles.x);
         SocketConnect.getSocketInstance().SendFloat(model.eulerAngles.y);
         SocketConnect.getSocketInstance().SendFloat(model.eulerAngles.z);
     }
 }
Esempio n. 21
0
    //点击提交事件
    void OnSubmitClick(GameObject go)
    {
        Debug.Log("点击提交");

        if (flag)   //协程已经启动
        {
            Debug.Log(" submit coroutine   return ");
            return;
        }
        Debug.Log("=========Connect============");
        //获得连接实例
        sc = SocketConnect.getSocketInstance();
        //这是提交信号为true
        NetworkData.isSubmit = true;
        //发送请求链接信号
        sc.SendInt(NetworkData.SENDCONNECT);
        flag = true;
        StartCoroutine(WaitSign());
    }
Esempio n. 22
0
 public void ConnectedServer()
 {
     UnityEngine.NetworkReachability state = UnityEngine.Application.internetReachability;
     if (state != UnityEngine.NetworkReachability.NotReachable)
     {
         NetWriter.SetUrl(serverIp + ":" + port);
         //if (mSocket == null)
         {
             string   strUrl = NetWriter.GetUrl();
             string[] arr    = strUrl.Split(new char[] { ':' });
             int      nPort  = int.Parse(arr[1]);
             mSocket = new SocketConnect(arr[0], nPort, HeadFormater, timeOut, hearInterval);
         }
         mSocket.EnsureConnected();
     }
     else
     {
         QueueEvent(EventDef.ServerConnectFailure, "当前网络没有连接");
     }
 }
Esempio n. 23
0
    //连接服务器
    public bool Connect()
    {
        acceptNet = true;

        Close();
        _socketCon = new SocketConnect(host, port);

        if (_socketCon.Open())
        {
            Debug.Log("连接服务器成功!");

            //20150912 add////////////////////////////////////////
            thread = new Thread(new ThreadStart(CheckReceive));
            thread.Start();
            //end////////////////////////////////////////////////


            return(true);
        }
        Debug.LogError("连接服务器失败!");
        return(false);
    }
Esempio n. 24
0
    //连接服务器
    private bool Connect()
    {
        acceptNet = true;

        StopService();

        _socketCon = new SocketConnect(host, port);

        if (_socketCon.Open())
        {
            Debug.Log("连接服务器成功!");

            serviceState = ENetServiceState.Running;

            thread = new Thread(new ThreadStart(CheckReceive));
            thread.Start();

            return(true);
        }
        Debug.LogError("连接服务器失败!");
        return(false);
    }
Esempio n. 25
0
    private void SocketRequest(int actionId, int actionRespId, LuaFramework.ByteBuffer body, LuaInterface.LuaFunction callback, IHeadFormater formater, bool bShowLoading)
    {
        if (mSocket == null)
        {
            string   url = NetWriter.GetUrl();
            string[] arr = url.Split(new char[] { ':' });
            if (arr.Length != 2)
            {
                Debug.LogError("Url is error:" + url);
                return;
            }
            int nPort = int.Parse(arr[1]);
            mSocket = new SocketConnect(arr[0], nPort, formater);
        }

        SocketPackage package = new SocketPackage();

        package.MsgId        = NetWriter.MsgId - 1;
        package.ActionId     = actionId;
        package.ActionRespId = actionRespId;
        package.HasLoading   = bShowLoading;
        package.SendTime     = DateTime.Now;
        package.Callback     = callback;

        NetWriter writer = NetWriter.Instance;

        SetActionHead(actionId, body);
        writer.SetBodyData(body.ToBytes());
        byte[] data = writer.PostData();
        NetWriter.resetData();

        if (bShowLoading)
        {
            RequestDelegate(Status.eStartRequest);
        }
        mSocket.Send(data, package);
    }
Esempio n. 26
0
        /// <summary>
        /// 监听网站目标服务器
        /// </summary>
        public static void ProcessTargetServer(ConnectionContext browser, SocketConnect target)
        {
            Task.Run(async() =>
            {
                try
                {
                    while (true)
                    {
                        var readResult = await target.PipeReader.ReadAsync();
                        if (!readResult.Buffer.IsEmpty)
                        {
                            SequencePosition position = readResult.Buffer.Start;
                            if (readResult.Buffer.TryGet(ref position, out var memory))
                            {
                                //发往浏览器
                                await browser.Transport.Output.WriteAsync(memory);

                                target.PipeReader.AdvanceTo(readResult.Buffer.GetPosition(memory.Length));
                            }
                        }
                        else
                        {
                            if (readResult.IsCanceled || readResult.IsCompleted)
                            {
                                break;
                            }
                        }
                    }

                    await target.PipeReader.CompleteAsync();
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }
            });
        }
Esempio n. 27
0
 internal static void InvokeSocketConnect(SocketConnectEventArgs e)
 {
     SocketConnect?.Invoke(e);
 }
Esempio n. 28
0
    /// <summary>
    /// parse input data
    /// </summary>
    /// <param name="gameAction"></param>
    /// <param name="userData"></param>
    /// <param name="formater"></param>
    /// <param name="bShowLoading"></param>
    private void SocketRequest(GameAction gameAction, object userData, IHeadFormater formater, bool bShowLoading)
    {
        if (mSocket == null)
        {
            string strUrl = NetWriter.GetUrl();
            string[] arr = strUrl.Split(new char[] { ':' });
            int nPort = int.Parse(arr[1]);
            mSocket = new SocketConnect(arr[0], nPort, formater);
        }
        gameAction.Head.MsgId = NetWriter.MsgId - 1;

        SocketPackage package = new SocketPackage();
        package.UserData = userData;
        package.MsgId = gameAction.Head.MsgId;
        package.ActionId = gameAction.ActionId;
        package.Action = gameAction;
        package.HasLoading = bShowLoading;
        package.SendTime = DateTime.Now;
        byte[] data = gameAction.Send(userData);
        NetWriter.resetData();
        if (bShowLoading)
        {
            RequestDelegate(Status.eStartRequest);
        }
        mSocket.Send(data, package);
    }
Esempio n. 29
0
        /// <summary>
        /// 处理浏览器
        /// </summary>
        /// <param name="browser"></param>
        /// <returns></returns>
        public static void ProcessBrowserAsync(ConnectionContext browser)
        {
            Task.Run(async() =>
            {
                //最终网站
                SocketConnect target = new SocketConnect();
                try
                {
                    while (true)
                    {
                        System.IO.Pipelines.ReadResult result = await browser.Transport.Input.ReadAsync();
                        if (!result.Buffer.IsEmpty)
                        {
                            var message = Message.ParsePack(result.Buffer.ToArray());
                            if (message.Item1 != null)
                            {
                                var data = message.Item1.Content;
                                //var data = Crypto.DecryptAES(message.Item1.Content);
                                Socket5Info socket5Info = new Socket5Info();
                                if (socket5Info.TryParse(data))
                                {
                                    await target.ConnectAsync(System.Text.Encoding.UTF8.GetString(socket5Info.Address), socket5Info.Port);
                                    //连接到服务器
                                    //var ipEndPoint = await GetIpEndPointAsync(System.Text.Encoding.UTF8.GetString(socket5Info.Address), socket5Info.Port);
                                    //if(ipEndPoint == null)
                                    //{
                                    //    break;
                                    //}

                                    //await target.ConnectAsync(ipEndPoint.Address,ipEndPoint.Port);

                                    byte[] sendData = new byte[] { 0x05, 0x00, 0x00, 0x01, 0x7f, 0x00, 0x00, 0x01, 0x1f, 0x40 };
                                    //发送确认到浏览器

                                    await browser.Transport.Output.WriteAsync(sendData);

                                    ProcessTargetServer(browser, target);
                                }
                                else
                                {
                                    //发送数据到目标服务器
                                    await target.TcpClient.Client.SendAsync(data, SocketFlags.None);
                                }

                                browser.Transport.Input.AdvanceTo(result.Buffer.GetPosition(message.Item2));
                            }
                            else
                            {
                                browser.Transport.Input.AdvanceTo(result.Buffer.GetPosition(0));
                            }
                        }
                        else
                        {
                            if (result.IsCompleted || result.IsCanceled)
                            {
                                break;
                            }
                        }
                    }
                    await browser.Transport.Input.CompleteAsync();
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }
            });
        }
Esempio n. 30
0
 public void setConnect(SocketConnect connect)
 {
     mConnect = connect;
 }
Esempio n. 31
0
    /// <summary>
    /// parse input data
    /// </summary>
    /// <param name="url"></param>
    /// <param name="callback"></param>
    /// <param name="ud"></param>
    public void SocketRequest(int actionId, INetCallback callback, object userData, bool bShowLoading)
    {
        if (mSocket == null)
        {
            string strUrl = NetWriter.GetUrl();
            Debug.Log("url" + strUrl);
            string[] arr = strUrl.Split(new char[] { ':' });
            int nPort = int.Parse(arr[1]);
            mSocket = new SocketConnect(arr[0], nPort);
        }
        NetWriter writer = NetWriter.Instance;
        writer.writeInt32("actionId", actionId);
        byte[] data = NetWriter.Instance.PostData();
        SocketPackage package = new SocketPackage();
        package.FuncCallback = callback;
        package.UserData = userData;
        package.MsgId = NetWriter.MsgId - 1;
        package.ActionId = actionId;
        package.HasLoading = bShowLoading;
        package.SendTime = DateTime.Now;
        NetWriter.resetData();

        if (bShowLoading)
        {
            RequestDelegate(Status.eStartRequest);
        }
        mSocket.Request(data, package);
    }
Esempio n. 32
0
 public Eventer(SocketConnect s)
 {
     socket = s;
     events = new Queue<SocketConnect.ClientEvent>();
 }
Esempio n. 33
0
        /// <summary>
        /// parse input data
        /// </summary>
        /// <param name="gameAction"></param>
        /// <param name="actionParam"></param>
        /// <param name="formater"></param>
        /// <param name="bShowLoading"></param>
        private void SocketRequest(GameAction gameAction, ActionParam actionParam, IHeadFormater formater, bool bShowLoading)
        {
            if (mSocket == null)
            {
                string url = NetWriter.GetUrl();
                string[] arr = url.Split(new char[] { ':' });
                if (arr.Length != 2)
                {
                    Debug.LogError("Url is error:" + url);
                    return;
                }
                int nPort = int.Parse(arr[1]);
                mSocket = new SocketConnect(arr[0], nPort, formater);

            }
            gameAction.Head.MsgId = NetWriter.MsgId - 1;

            SocketPackage package = new SocketPackage();
            package.MsgId = gameAction.Head.MsgId;
            package.ActionId = gameAction.ActionId;
            package.Action = gameAction;
            package.HasLoading = bShowLoading;
            package.SendTime = DateTime.Now;
            byte[] data = gameAction.Send(actionParam);
            NetWriter.resetData();
            if (bShowLoading)
            {
                RequestDelegate(Status.eStartRequest);
            }
            mSocket.Send(data, package);
        }
Esempio n. 34
0
 public static void InvokeSocketConnect(SocketConnectEventArgs e) => SocketConnect?.Invoke(e);
Esempio n. 35
0
 public PsetForm(SocketConnect connect)
 {
     this.connect = connect;
     InitializeComponent();
 }