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); }
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); }