public static FileSendOnNet RcvFileRawData(Socket client)
        {
            FileSendOnNet fileRcv        = new FileSendOnNet();
            long          FileLength     = 0;
            long          ReceivedLength = 0;
            FileStream    fs             = null;

            try
            {
                ;
                if (fileRcv.RcvFileHeader(client))
                {
                    fs         = new FileStream(fileRcv.mFileFullPath, FileMode.Create);
                    FileLength = fileRcv.FileSize;
                    int    RcvOneReadFile = 0;
                    byte[] recvBytes      = new byte[1024 * 1024];
                    //1.2接收文件内容
                    while (ReceivedLength < FileLength)
                    {
                        long UnReadLength = FileLength - ReceivedLength;
                        if (UnReadLength == 0)
                        {
                            break;
                        }
                        //有数据
                        RcvOneReadFile = client.Receive(
                            recvBytes,
                            0,
                            recvBytes.Length,
                            SocketFlags.None);

                        if (RcvOneReadFile == 0)
                        {
                            Thread.Sleep(200);
                            if (client.Available > 0)
                            {
                            }
                            else
                            {
                                //  break;
                            }
                        }
                        else
                        {
                            ReceivedLength += RcvOneReadFile;
                            fs.Write(recvBytes, 0, RcvOneReadFile);
                        }
                    }
                }
            }
            catch (IOException e)
            {
                Debug.WriteLine("Request error: " + e);
            }
            catch (Exception ex)
            {
                Debug.WriteLine("Request error: " + ex);
            }
            finally
            {
                if (fs != null)
                {
                    fs.Flush();
                    fs.Close();
                }
                int    test_t    = -1;
                byte[] recvBytes = new byte[1024];
                if (ReceivedLength == FileLength)
                {
                    test_t = client.Receive(
                        recvBytes,
                        0,
                        recvBytes.Length,
                        SocketFlags.None);
                }
                else
                {
                    fileRcv.mFileFullPath = null;
                    DeleteFile(fileRcv);
                }
            }

            return(fileRcv);
        }
示例#2
0
        public static FileSendOnNet RcvFileRawData(Socket client)
        {
            FileSendOnNet fileRcv        = new FileSendOnNet();
            long          FileLength     = 0;
            long          ReceivedLength = 0;
            FileStream    fs             = null;

            try
            {
                ;
                if (fileRcv.RcvFileHeader(client))
                {
#if true
                    LogHelper.WriteLog(typeof(PhonePcCommunication), "+++++++开始接受文件:" + fileRcv.GetFileName());
#endif
                    fs         = new FileStream(fileRcv.mFileFullPath, FileMode.Create);
                    FileLength = fileRcv.FileSize;
                    int    RcvOneReadFile = 0;
                    byte[] recvBytes      = new byte[1024];
                    //1.2接收文件内容
                    while (ReceivedLength < FileLength)
                    {
                        long UnReadLength = FileLength - ReceivedLength;
                        if (UnReadLength == 0)
                        {
                            break;
                        }
                        //有数据
                        RcvOneReadFile = client.Receive(
                            recvBytes,
                            0,
                            recvBytes.Length,
                            SocketFlags.None);

                        if (RcvOneReadFile == 0)
                        {
                            Thread.Sleep(200);
                            if (client.Available > 0)
                            {
                            }
                            else
                            {
                                Thread.Sleep(200);
                            }
                        }
                        else
                        {
                            ReceivedLength += RcvOneReadFile;
                            fs.Write(recvBytes, 0, RcvOneReadFile);
                        }
                    }
                }
            }
            catch (IOException e)
            {
                Debug.WriteLine("Request error: " + e);
            }
            catch (Exception ex)
            {
                Debug.WriteLine("Request error: " + ex);
            }
            finally
            {
                if (fs != null)
                {
                    fs.Flush();
                    fs.Close();
                    fs.Dispose();
                }
                //  int test_t=-1;
                //  byte[] recvBytes = new byte[1024];
                if (ReceivedLength == FileLength)
                {
#if true
                    LogHelper.WriteLog(typeof(PhonePcCommunication), "-------文件【已接受】:" + fileRcv.GetFileName());
#endif
                    //test_t = client.Receive(
                    //           recvBytes,
                    //           0,
                    //           recvBytes.Length ,
                    //           SocketFlags.None);
                }
                else
                {
#if true
                    LogHelper.WriteLog(typeof(PhonePcCommunication), "********文件【接收失败】:" + fileRcv.GetFileName());
#endif
                    fileRcv.mFileFullPath = null;
                    DeleteFile(fileRcv);
                }
            }

            return(fileRcv);
        }