コード例 #1
0
        // 处理上传文件请求
        public static void RecvUploadFile(SocketAsyncEventArgs e, Packet fp, ref bool IsSend)
        {
            AsyncUserToken token = (AsyncUserToken)e.UserToken;

            if (null == token.Param)
            {
                UploadFilePacketProParam param = new UploadFilePacketProParam();
                token.Param = param;
                ((PacketUploadFile)fp).ParseToParam(param);
                IsSend = false;
            }
            else
            {
                UploadFilePacketProParam param = (UploadFilePacketProParam)token.Param;
                param.dt.Write(e.Buffer, e.Offset, e.BytesTransferred);
                if (param.dt.Length >= param.FileLen)
                {
                    param.dt.Close();
                    param.dt = null;
                    int nResult = 1;
                    PacketInsertORUpdateAck ack = new PacketInsertORUpdateAck();
                    ack.CreatePIUAckPacket(nResult);
                    fp.PacketToBuf(e.Buffer, e.Offset);
                    e.SetBuffer(e.Offset, ack.GetPacketLen());
                    //IsSend = true;
                }
                else
                {
                    IsSend = false;
                }
            }
        }
コード例 #2
0
ファイル: Packet.cs プロジェクト: liukuny/CoDesignServer
        public void ParseToParam(UploadFilePacketProParam param)
        {
            string strReq = DataToString();

            if (strReq.Length > 0)
            {
                param.ActionCode = ActionCode;
                // 取出分割符(放在字符串的最后位置)
                char cSplit = strReq[strReq.Length - 1];
                // 第一个字段是文件名
                // 第二个字段是文件长度
                string[] arr = strReq.Split(cSplit);
                param.FileLen = Convert.ToInt32(arr[1]);
                try
                {
                    param.dt = new System.IO.FileStream(arr[0], System.IO.FileMode.Create);
                }
                catch (Exception e) { }
            }
        }