加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

在局域网之间传递文件

发布时间:2020-12-17 01:07:18 所属栏目:安全 来源:网络整理
导读:?http://blog.csdn.net/lovefootball/article/details/2827139 在做内部OA的时候,我们经常会碰到在局域网内传递文件,方法有很多,比如FTP,WebService,WMI等等 今天我要说的是最简单的一种方法,就是利用DOS命令去连接对方的机器,然后就像操作本地的文件

?http://blog.csdn.net/lovefootball/article/details/2827139

在做内部OA的时候,我们经常会碰到在局域网内传递文件,方法有很多,比如FTP,WebService,WMI等等

今天我要说的是最简单的一种方法,就是利用DOS命令去连接对方的机器,然后就像操作本地的文件一样了

主要用到的命令就是ping和net use命令,思路就是先检查对方机器是否可以ping通,如果可以ping通,那么再使用net use命令去连接对方机器,连接成功则直接使用File类下面的方法,就像操作本地机器一样的。

DOS大家应该用的很多吧,我就不详细的说了,这两个命令具体参考下(http://tech.163.com/06/0624/21/2KDND4CR00091VCV.html和http://tech.163.com/06/0624/21/2KDNIV3G00091VCV.html)

那么在.NET中如何使用这两个命令呢?很简单,就是使用Process类调用cmd.exe,有关Process的更多信息请参考MSDN(http://msdn.microsoft.com/en-us/library/system.diagnostics.process.aspx)

?

首先我们先看看ping的方法

  1. //返回true则代表可以ping成功
  2. //remoteHost为对方IP
  3. public?static?bool?Ping(string?remoteHost)
  4. {
  5. ????bool?Flag?=?false;
  6. ????Process?proc?=?new?Process();
  7. ????try
  8. ????{
  9. ????????proc.StartInfo.FileName?=?"cmd.exe";
  10. ????????proc.StartInfo.UseShellExecute?=?false;
  11. ????????proc.StartInfo.RedirectStandardInput?=?true;
  12. ????????proc.StartInfo.RedirectStandardOutput?=?true;
  13. ????????proc.StartInfo.RedirectStandardError?=?true;
  14. ????????proc.StartInfo.CreateNoWindow?=?true;
  15. ????????proc.Start();
  16. ????????string?dosLine?=?@"ping?-n?1?"?+?remoteHost;
  17. ????????proc.StandardInput.WriteLine(dosLine);
  18. ????????proc.StandardInput.WriteLine("exit");
  19. ????????while?(!proc.HasExited)
  20. ????????{
  21. ????????????proc.WaitForExit(500);
  22. ????????}
  23. ????????string?pingResult?=?proc.StandardOutput.ReadToEnd();
  24. ????????if?(pingResult.IndexOf("(0%?loss)")?!=?-1)
  25. ????????{
  26. ????????????Flag?=?true;
  27. ????????}
  28. ????????proc.StandardOutput.Close()?;
  29. ????}
  30. ????catch?(Exception?ex)
  31. ????{
  32. ????}
  33. ????finally
  34. ????{
  35. ????????proc.Close();
  36. ????????proc.Dispose();
  37. ????}
  38. ????return?Flag;
  39. }

接下来就是使用net use连接对方机器

?

  1. //返回true则代表可以连接成功
  2. //remoteHost为对方IP?userName为用户名?passWord为密码
  3. public?static?bool?Connect(string?remoteHost,?string?userName,?string?passWord)
  4. {
  5. ????bool?Flag?=?false;
  6. ????Process?proc?=?new?Process();
  7. ????try
  8. ????{
  9. ????????proc.StartInfo.FileName?=?"cmd.exe";
  10. ????????proc.StartInfo.UseShellExecute?=?false;
  11. ????????proc.StartInfo.RedirectStandardInput?=?true;
  12. ????????proc.StartInfo.RedirectStandardOutput?=?true;
  13. ????????proc.StartInfo.RedirectStandardError?=?true;
  14. ????????proc.StartInfo.CreateNoWindow?=?true;
  15. ????????proc.Start();
  16. ????????string?dosLine?=?@"net?use?//"?+?remoteHost?+?"?"?+?passWord?+?"?"?+?"?/user:"?+?userName?+?">NUL";
  17. ????????proc.StandardInput.WriteLine(dosLine);
  18. ????????proc.StandardInput.WriteLine("exit");
  19. ????????while?(!proc.HasExited)
  20. ????????{
  21. ????????????proc.WaitForExit(1000);
  22. ????????}
  23. ????????string?errormsg?=?proc.StandardError.ReadToEnd();
  24. ????????proc.StandardError.Close();
  25. ????????if?(String.IsNullOrEmpty(errormsg))
  26. ????????{
  27. ????????????Flag?=?true;
  28. ????????}
  29. ????}
  30. ????catch?(Exception?ex)
  31. ????{
  32. ????}
  33. ????finally
  34. ????{
  35. ????????proc.Close();
  36. ????????proc.Dispose();
  37. ????}
  38. ????return?Flag;
  39. }

如果连接成功,则可以使用FIle下面的方法,比如Copy文件等操作

注意:路径不要写错了!!!

还有就是使用完毕后再执行一遍net use命令,此时跟的参数是 /delete ,作用不用我说了吧^_^

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读