// 客户端修改了文件 public static bool modifyFile(string sourceFilePath, DateTime lastWriteTime, Socket curClientSocket) { try { FileTransferHandler.receiveFile(sourceFilePath, lastWriteTime, curClientSocket); return(true); } catch (Exception ex) { MessageBox.Show(ex.Message.ToString()); return(false); } }
public static bool syncNow(string home, Socket curClientSocket) { bool loop = true; string fullPath = null; string para1 = null; string para2 = null; DateTime lastWriteTime = new DateTime(); byte[] receiveBytes = new byte[CommonStaticVariables.constSize]; while (loop) { if (curClientSocket.Poll(100, SelectMode.SelectRead)) { int successReceiveBytes = curClientSocket.Receive(receiveBytes); string[] parMessage; if ((parMessage = MessageParser.parseFileMessage(receiveBytes)) != null) { string flag = parMessage[0]; para1 = parMessage[1]; para2 = parMessage[2]; switch (flag) { case "0": // 文件夹 fullPath = home + "\\" + para1; lastWriteTime = DateTime.Parse(para2); if (!Directory.Exists(fullPath)) { Directory.CreateDirectory(fullPath); } Directory.SetLastWriteTime(fullPath, lastWriteTime); VerifyHandler.postMessage(curClientSocket, CommonStaticVariables.messageDoneEncrypted); break; case "1": // 文件 fullPath = home + "\\" + para1; lastWriteTime = DateTime.Parse(para2); if (!File.Exists(fullPath)) { VerifyHandler.postMessage(curClientSocket, CommonStaticVariables.messageFailedEncrypted); // 接收从客户器端传来的文件 FileTransferHandler.receiveFile(fullPath, lastWriteTime, curClientSocket); VerifyHandler.postMessage(curClientSocket, CommonStaticVariables.messageDoneEncrypted); // 接收从客户器端传来的文件 } else { if (lastWriteTime == File.GetLastWriteTime(fullPath)) { VerifyHandler.postMessage(curClientSocket, CommonStaticVariables.messageDoneEncrypted); } else { VerifyHandler.postMessage(curClientSocket, CommonStaticVariables.messageFailedEncrypted); // 接收从客户器端传来的文件 FileTransferHandler.receiveFile(fullPath, lastWriteTime, curClientSocket); VerifyHandler.postMessage(curClientSocket, CommonStaticVariables.messageDoneEncrypted); } } break; case "2": // 同步完成 loop = false; break; default: break; } } } } return(true); }