예제 #1
0
        /// <summary>
        /// 小文件上传响应
        /// client : SocketPacketFlag.UploadRequest + path string(BytesParser encoded), content bytes
        /// server : SocketPacketFlag.UploadAllowed + new byte[1]
        ///     or : SocketPacketFlag.UploadDenied + err_msg
        /// </summary>
        /// <param name="client"></param>
        /// <param name="bytes"></param>
        private void ResponseUploadSmallFile(SocketResponder responder, byte[] bytes)
        {
            string err_msg = "";

            try
            {
                if ((GetIdentity(responder) & SocketIdentity.WriteFile) == 0)
                {
                    throw new Exception("Socket not authenticated.");
                }
                int    pt           = 0;
                string path         = BytesConverter.ParseString(bytes, ref pt);
                byte[] contentBytes = new byte[bytes.Length - pt];
                Array.Copy(bytes, pt, contentBytes, 0, contentBytes.Length);
                File.WriteAllBytes(path, contentBytes);
            }
            catch (Exception ex)
            {
                err_msg = ex.Message;
            }
            if (string.IsNullOrEmpty(err_msg))
            {
                responder.SendBytes(SocketPacketFlag.UploadAllowed, new byte[1]);
            }
            else
            {
                responder.SendBytes(SocketPacketFlag.UploadDenied, err_msg);
            }
        }
예제 #2
0
파일: RouteNode.cs 프로젝트: xpA076/Socket
        public static RouteNode FromBytes(byte[] bytes, ref int index)
        {
            RouteNode rn = new RouteNode();

            rn.Address = TCPAddress.FromBytes(bytes, ref index);
            rn.Name    = BytesConverter.ParseString(bytes, ref index);
            return(rn);
        }