Exemple #1
0
        void DataReceived(object sender, SocketEventArgs e)
        {
            var bytes = new byte[16];

            Buffer.BlockCopy(e.Data, 0, bytes, 0, 16);
            var ssid       = new Guid(bytes);
            var data       = e.Data;
            var sendResult = proxy.SendDataBack(ssid, e.Data, 16, e.Data.Length - 16);

            if (!sendResult)
            {
                Task.Factory.StartNew(() =>
                {
                    NameValueCollection requestParam = new NameValueCollection();
                    requestParam["actionid"]         = "2";
                    requestParam["ssid"]             = ssid.ToString("N");
                    requestParam["msgid"]            = "0";

                    byte[] paramData = Encoding.ASCII.GetBytes(RequestParse.ToQueryString(requestParam));

                    try
                    {
                        Send(paramData);
                    }
                    catch (Exception ex)
                    {
                        logger.Error("发送tcp连接断开通知失败。", ex);
                    }
                });
            }
        }
Exemple #2
0
        void DataReceived(object sender, SocketEventArgs e)
        {
            try
            {
                var bytes = new byte[16];
                Buffer.BlockCopy(e.Data, 0, bytes, 0, 16);
                var ssid       = new Guid(bytes);
                var sendResult = proxy.SendDataBack(ssid, e.Data, 16, e.Data.Length - 16);
                if (!sendResult)
                {
                    Task.Factory.StartNew(() =>
                    {
                        string paramStr = "";
                        try
                        {
                            NameValueCollection requestParam = new NameValueCollection();
                            //连接中断通知游戏服
                            requestParam["actionid"] = ((int)ActionEnum.Interrupt).ToString();
                            requestParam["ssid"]     = ssid.ToString("N");
                            requestParam["msgid"]    = "0";
                            paramStr = RequestParse.ToQueryString(requestParam);

                            byte[] paramData = Encoding.ASCII.GetBytes(paramStr);

                            Send(paramData);
                        }
                        catch (Exception ex)
                        {
                            TraceLog.WriteError("连接中断通知游戏服error:{0}\r\nParam:{1}", ex, paramStr);
                        }
                    });
                }
            }
            catch (Exception er)
            {
                TraceLog.WriteError("DataReceived error:{0}", er);
            }
        }