Esempio n. 1
0
        private void OnDownloadMapAndVoiceData(object objData, ResponseData result)
        {
            ClientSocket cs  = null;
            SslAppData   sad = new SslAppData();

            try
            {
                SimpleJson.JsonObject jsonPathData = new SimpleJson.JsonObject();
                jsonPathData.Add("op", "UPLOAD_PATH_DATA");
                jsonPathData.Add("data", (string)objData);
                //jsonPathData.Add("data", "no actual data.");
                string strJsonText = jsonPathData.ToString();

                cs = Connect();
                if (cs == null)
                {
                    result.Code = ResponseData.RESP_SERVER_UNREACHABLE;
                    result.Msg  = TypeAndParameter.STR_CONNECT_WITH_SERVER_FAILED;
                    return;
                }

                // 发送数据
                sad.SetType(SslAppData.APP_TYPE_PLAIN_JSON);
                byte[] allBytes = System.Text.Encoding.Default.GetBytes(strJsonText);
                if (allBytes.Length > SslAppData.SSL_APP_CONTENT_MAX_SIZE)
                {
                    sad.SetFirst(true);
                    sad.SetLast(false);
                    sad.SetData(allBytes, 0, SslAppData.SSL_APP_CONTENT_MAX_SIZE);
                    cs.Send(sad);

                    sad.SetFirst(false);
                    int i = SslAppData.SSL_APP_CONTENT_MAX_SIZE;
                    while (i < allBytes.Length)
                    {
                        if (allBytes.Length - i <= SslAppData.SSL_APP_CONTENT_MAX_SIZE)
                        {
                            sad.SetLast(true);
                            sad.SetData(allBytes, i);
                            i += allBytes.Length - i;
                        }
                        else
                        {
                            sad.SetData(allBytes, i, SslAppData.SSL_APP_CONTENT_MAX_SIZE);
                            i += SslAppData.SSL_APP_CONTENT_MAX_SIZE;
                        }
                        cs.Send(sad);
                    }
                }
                else
                {
                    sad.SetData(allBytes);
                    //sad.SetData(System.Text.Encoding.UTF8.GetBytes(strJsonText));
                    cs.Send(sad);
                }

                // 接收数据
                cs.Recv(sad);
                byte[] jsonData = sad.GetData();
                //strJsonText = System.Text.Encoding.Default.GetString(jsonData);
                strJsonText = System.Text.Encoding.UTF8.GetString(jsonData);

                var rsp = (IDictionary <string, object>)SimpleJson.SimpleJson.DeserializeObject(strJsonText);
                if ("AE_SUCCESS" == (rsp["err"] as string))
                {
                    result.Code = ResponseData.RESP_SUCCESS;
                    result.Msg  = TypeAndParameter.STR_UPLOAD_PATH_DATA_FINISHED;
                }
                else
                {
                    result.Msg = rsp["msg"] as string;
                }
            }
            catch (Exception e)
            {
                XxdwDebugger.LogError(e.StackTrace);
            }
            finally
            {
                if (cs != null)
                {
                    cs.Close();
                }
            }
        }
Esempio n. 2
0
        private void OnUploadPathData2(object objData, ResponseData result)
        {
            ClientSocket cs  = null;
            SslAppData   sad = new SslAppData();

            try
            {
                string str = (string)objData;
                cs = Connect();
                if (cs == null)
                {
                    result.Code = ResponseData.RESP_SERVER_UNREACHABLE;
                    result.Msg  = TypeAndParameter.STR_CONNECT_WITH_SERVER_FAILED;
                    return;
                }

                // 发送数据
                sad.SetType(SslAppData.APP_TYPE_FILE);
                byte[] allBytes      = System.Text.Encoding.Default.GetBytes(str);
                byte[] filenameBytes = System.Text.Encoding.Default.GetBytes("test.txt\0");
                byte[] d             = new byte[SslAppData.APP_TYPE_FILE_HEADER_SIZE + filenameBytes.Length + SslAppData.SSL_APP_CONTENT_MAX_SIZE];
                int    s             = IPAddress.HostToNetworkOrder(allBytes.Length); // 文件大小
                System.Array.Copy(BitConverter.GetBytes(s), 0, d, 0, 4);
                //System.Array.Copy(BitConverter.GetBytes(91), 0, d, 4, 4); // 偏移,为调试
                short t = IPAddress.HostToNetworkOrder((short)filenameBytes.Length);
                System.Array.Copy(BitConverter.GetBytes(t), 0, d, 8, 2);
                System.Array.Copy(filenameBytes, 0, d, SslAppData.APP_TYPE_FILE_HEADER_SIZE, filenameBytes.Length);

                if (allBytes.Length > SslAppData.SSL_APP_CONTENT_MAX_SIZE)
                {
                    sad.SetFirst(true);
                    sad.SetLast(false);

                    System.Array.Copy(allBytes, 0, d, SslAppData.APP_TYPE_FILE_HEADER_SIZE + filenameBytes.Length, SslAppData.SSL_APP_CONTENT_MAX_SIZE);
                    sad.SetData(d, 0, SslAppData.APP_TYPE_FILE_HEADER_SIZE + filenameBytes.Length + SslAppData.SSL_APP_CONTENT_MAX_SIZE);
                    cs.Send(sad);

                    sad.SetFirst(false);
                    int i = SslAppData.SSL_APP_CONTENT_MAX_SIZE;
                    while (i < allBytes.Length)
                    {
                        if (allBytes.Length - i <= SslAppData.SSL_APP_CONTENT_MAX_SIZE)
                        {
                            sad.SetLast(true);
                            sad.SetData(allBytes, i);
                            i += allBytes.Length - i;
                        }
                        else
                        {
                            sad.SetData(allBytes, i, SslAppData.SSL_APP_CONTENT_MAX_SIZE);
                            i += SslAppData.SSL_APP_CONTENT_MAX_SIZE;
                        }
                        cs.Send(sad);
                    }
                }
                else
                {
                    System.Array.Copy(allBytes, 0, d, SslAppData.APP_TYPE_FILE_HEADER_SIZE + filenameBytes.Length, allBytes.Length);
                    sad.SetData(d, 0, SslAppData.APP_TYPE_FILE_HEADER_SIZE + filenameBytes.Length + allBytes.Length);
                    cs.Send(sad);
                }

                // 接收数据
                cs.Recv(sad);
                byte[] jsonData = sad.GetData();
                //string strJsonText = System.Text.Encoding.Default.GetString(jsonData);
                string strJsonText = System.Text.Encoding.UTF8.GetString(jsonData);

                var rsp = (IDictionary <string, object>)SimpleJson.SimpleJson.DeserializeObject(strJsonText);
                if ("AE_SUCCESS" == (rsp["err"] as string))
                {
                    result.Code = ResponseData.RESP_SUCCESS;
                    result.Msg  = TypeAndParameter.STR_UPLOAD_PATH_DATA_FINISHED;
                }
                else
                {
                    // utf-8格式的消息转unicode
                    //byte[] buffer= Encoding.UTF8.GetBytes(rsp["msg"] as string);
                    //result.Msg = Encoding.Unicode.GetString(buffer);
                    result.Msg = rsp["msg"] as string;
                }
            }
            catch (Exception e)
            {
                XxdwDebugger.LogError(e.StackTrace);
            }
            finally
            {
                if (cs != null)
                {
                    cs.Close();
                }
            }
        }