void Start()
    {
        SerializeManager <PlayerScore> serializer = new SerializeManager <PlayerScore>();
        PlayerScore myData = new PlayerScore("matt", 200);

        output = serializer.SerializeObject(myData);
    }
Beispiel #2
0
    private void Update()
    {
        AllTcpRequestData requestData = null;

        while (mAllTcpRequestDatas.TryDequeue(out requestData))
        {
            int protocolID = SocketHead.GetPacketProtocolID(requestData.RequestMessage, 4);

            if (protocolID == ProtocolCommand.RequestHearBeat)
            {
                Debug.Log($"收到{requestData.mClientSocket.RemoteEndPoint} 心跳包");


                HeartbeatResponse response = new HeartbeatResponse()
                {
                    mSystemTime = System.DateTime.UtcNow.Ticks
                };
                string responseStr = SerializeManager.SerializeObject(response);
                TcpServerUIComponent.Instance.mTcpServer.SendMessage(ProtocolCommand.ResponseHearBeat, responseStr, requestData.mClientSocket);
            }
            else if (protocolID == ProtocolCommand.RequestLogin)
            {
                string message = Encoding.UTF8.GetString(requestData.RequestMessage, SocketHead.S_HeadLength, requestData.RequestMessage.Length - SocketHead.S_HeadLength);
                Debug.Log($"接收到来自{requestData.mClientSocket.RemoteEndPoint} 的登录信息{message}");


                LoginRequest request = SerializeManager.DeserializeObject <LoginRequest>(message);

                LoginResponse response = new LoginResponse();
                response.mUserName  = request.mUserName;
                response.mToken     = "xyz";
                response.mIsSuccess = true;

                string responseStr = SerializeManager.SerializeObject(response);
                TcpServerUIComponent.Instance.mTcpServer.SendMessage(ProtocolCommand.ResponseLogin, responseStr, requestData.mClientSocket);
            }
        }
    }
Beispiel #3
0
 void Start()
 {
     SerializeManager<PlayerScore2> serializer = new SerializeManager<PlayerScore2>();
     PlayerScore2 myData = new PlayerScore2("matt", 200);
     output = serializer.SerializeObject(myData);
 }
        public static byte[] GetMultipartFormData(Dictionary <string, object> postParameters, string boundary)
        {
            Stream formDataStream = new System.IO.MemoryStream();
            bool   needsCLRF      = false;

            foreach (var param in postParameters)
            {
                // Thanks to feedback from commenters, add a CRLF to allow multiple parameters to be added.
                // Skip it on the first parameter, add it to subsequent parameters.
                if (needsCLRF)
                {
                    formDataStream.Write(encoding.GetBytes("\r\n"), 0, encoding.GetByteCount("\r\n"));
                }
                needsCLRF = true;
                if (param.Value is FileParameter)
                {
                    FileParameter fileToUpload = (FileParameter)param.Value;
                    // Add just the first part of this param, since we will write the file data directly to the Stream
                    string header = string.Format("--{0}\r\nContent-Disposition: form-data; name=\"{1}\"; filename=\"{2}\"\r\nContent-Type: {3}\r\n\r\n",
                                                  boundary,
                                                  param.Key,
                                                  fileToUpload.FileName ?? param.Key,
                                                  fileToUpload.ContentType ?? "application/octet-stream");

                    formDataStream.Write(encoding.GetBytes(header), 0, encoding.GetByteCount(header));
                    // Write the file data directly to the Stream, rather than serializing it to a string.
                    formDataStream.Write(fileToUpload.File, 0, fileToUpload.File.Length);
                }
                else if (param.Value is LoadOptions)
                {
                    string header = string.Format("--{0}\r\nContent-Disposition: form-data; name=\"{1}\"; objectname=\"{2}\"\r\nContent-Type: {3}\r\n\r\n",
                                                  boundary, param.Key, param.Key, "application/octet-stream");
                    formDataStream.Write(encoding.GetBytes(header), 0, encoding.GetByteCount(header));
                    byte[] objData = SerializeManager.SerializeObject(param.Value);
                    formDataStream.Write(objData, 0, objData.Length);
                }
                else if (param.Value is byte[])
                {
                    string header = string.Format("--{0}\r\nContent-Disposition: form-data; name=\"{1}\"; objectname=\"{2}\"\r\nContent-Type: {3}\r\n\r\n",
                                                  boundary, param.Key, param.Key, "application/octet-stream");
                    formDataStream.Write(encoding.GetBytes(header), 0, encoding.GetByteCount(header));
                    byte[] objdata = param.Value as byte[];
                    formDataStream.Write(objdata, 0, objdata.Length);
                }
                else
                {
                    string postData = string.Format("--{0}\r\nContent-Disposition: form-data; name=\"{1}\"\r\n\r\n{2}",
                                                    boundary,
                                                    param.Key,
                                                    param.Value);
                    formDataStream.Write(encoding.GetBytes(postData), 0, encoding.GetByteCount(postData));
                }
            }

            // Add the end of the request.  Start with a newline
            string footer = "\r\n--" + boundary + "--\r\n";

            formDataStream.Write(encoding.GetBytes(footer), 0, encoding.GetByteCount(footer));

            // Dump the Stream into a byte[]
            formDataStream.Position = 0;
            byte[] formData = new byte[formDataStream.Length];
            formDataStream.Read(formData, 0, formData.Length);
            formDataStream.Close();

            return(formData);
        }