C# 如何获得局域网的主机名字 我想编个局域网聊天什么的小程序 所以我想获得在这个局域网中的所有主机的名字从而获得他的IP 请问大家怎么获得 局域网的IP的 我在网上看的 都编译不通过 我没学过C# 所以请大家最好能写个能编译的代码 最后有注释 我在这里谢谢大家了 把分都拿出来了 好吧 亲~~~ 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 网上不是有很多么http://blog.sina.com.cn/s/blog_43a75dfc0100mmri.html /// <summary> /// 获得局域网内ip /// </summary> /// <returns></returns> public static ArrayList GetAllLocalMachines() { Process p = new Process(); p.StartInfo.FileName = "cmd.exe"; p.StartInfo.UseShellExecute = false; p.StartInfo.RedirectStandardInput = true; p.StartInfo.RedirectStandardOutput = true; p.StartInfo.RedirectStandardError = true; p.StartInfo.CreateNoWindow = true; p.Start(); p.StandardInput.WriteLine("arp -a"); p.StandardInput.WriteLine("exit"); ArrayList list = new ArrayList(); StreamReader reader = p.StandardOutput; string IPHead = Dns.GetHostByName(Dns.GetHostName()).AddressList[0].ToString().Substring(0, 3); for (string line = reader.ReadLine(); line != null; line = reader.ReadLine()) { line = line.Trim(); if (line.StartsWith(IPHead) && (line.IndexOf("dynamic") != -1)) { string IP = line.Substring(0, 15).Trim(); string Mac = line.Substring(line.IndexOf("-") - 2, 0x11).Trim(); list.Add(IP); } } return list; }//调用ArrayList arr = GetAllLocalMachines(); 这段代码 我测试通过了啊 你是不是没有添加引用啊在最上面加以下引用using System.Diagnostics;using System.Collections;using System.IO;using System.Net; 编译不过去,报的什么错?没有添加引用吧?using System.Diagnostics;using System.IO; 编译的过去。。直接把他 复制到 复制到 C# 就能编??? 能不能 加我个QQ 给我 讲完 这个 就删 都行 1073889058 新建一个“控制台应用程序”项目,把下面的代码原样复制到Program.cs中,按Ctrl+F5运行using System;using System.Collections;using System.Diagnostics;using System.IO;using System.Net;class Program{ static void Main(string[] args) { ArrayList arr = GetAllLocalMachines(); foreach (string s in arr) Console.WriteLine(s); } /// <summary> /// 获得局域网内ip /// </summary> /// <returns></returns> public static ArrayList GetAllLocalMachines() { Process p = new Process(); p.StartInfo.FileName = "cmd.exe"; p.StartInfo.UseShellExecute = false; p.StartInfo.RedirectStandardInput = true; p.StartInfo.RedirectStandardOutput = true; p.StartInfo.RedirectStandardError = true; p.StartInfo.CreateNoWindow = true; p.Start(); p.StandardInput.WriteLine("arp -a"); p.StandardInput.WriteLine("exit"); ArrayList list = new ArrayList(); StreamReader reader = p.StandardOutput; string IPHead = Dns.GetHostByName(Dns.GetHostName()).AddressList[0].ToString().Substring(0, 3); for (string line = reader.ReadLine(); line != null; line = reader.ReadLine()) { line = line.Trim(); if (line.StartsWith(IPHead)) { string IP = line.Substring(0, 15).Trim(); string Mac = line.Substring(line.IndexOf("-") - 2, 0x11).Trim(); list.Add(IP); } } return list; }} 就这么几行程序还要什么注释。原理就是用Process类调用arp命令,在它的输出流中截取192打头的文字,就是局域网地址,你可以在命令窗口下打“arp -a”看下就知道了。 我 对于C# 不是很懂~~ 所以 。嘿嘿 我 得到的list的 不是Ip 而是 主机名 该怎么办??? 而且 这样获得和我直接在DOC中输入arp -a 不一样 PS 我在宿舍的路由器中 哥哥 姐姐 弟弟妹妹 给点力 ~~ 我不知道 为什么 上述的代码 只打出了 动态的 IP(也就是 只显示除了 上网的IP)而那些 静态的IP没有显示 而 arp -a 都显示 请问我用httpwebrequest去抓取某个网页代码 csc命令行编译运行C#程序问题 用户控件Load事件后执行什么事件? 在编译C#工程时,出现如下错误,请各位老大解释下,是什么原因呢? 类型化 dataset 中的数据如何保存为一个Foxpro数据库或Access数据库? WebClient有什么方法可以通过地址获取Html元素 自定义一个控件,如何在设计时固定其尺寸? c#中接收quoted-printabe编码邮件如何解码?谢谢 C#中如何得到局域 网的全部计算机的IP和名称? winForm中在关闭窗体时如何判断窗体中控件的值是否改变? 怎么删除treeview的空节点。
http://blog.sina.com.cn/s/blog_43a75dfc0100mmri.html
/// <summary>
/// 获得局域网内ip
/// </summary>
/// <returns></returns>
public static ArrayList GetAllLocalMachines()
{
Process p = new Process();
p.StartInfo.FileName = "cmd.exe";
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardInput = true;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.RedirectStandardError = true;
p.StartInfo.CreateNoWindow = true;
p.Start(); p.StandardInput.WriteLine("arp -a");
p.StandardInput.WriteLine("exit");
ArrayList list = new ArrayList();
StreamReader reader = p.StandardOutput;
string IPHead = Dns.GetHostByName(Dns.GetHostName()).AddressList[0].ToString().Substring(0, 3);
for (string line = reader.ReadLine(); line != null; line = reader.ReadLine())
{
line = line.Trim(); if (line.StartsWith(IPHead) && (line.IndexOf("dynamic") != -1))
{
string IP = line.Substring(0, 15).Trim(); string Mac = line.Substring(line.IndexOf("-") - 2, 0x11).Trim();
list.Add(IP);
}
}
return list;
}//调用ArrayList arr = GetAllLocalMachines();
在最上面加以下引用
using System.Diagnostics;
using System.Collections;
using System.IO;
using System.Net;
没有添加引用吧?
using System.Diagnostics;
using System.IO;
using System.Collections;
using System.Diagnostics;
using System.IO;
using System.Net;class Program
{
static void Main(string[] args)
{
ArrayList arr = GetAllLocalMachines();
foreach (string s in arr)
Console.WriteLine(s);
} /// <summary>
/// 获得局域网内ip
/// </summary>
/// <returns></returns>
public static ArrayList GetAllLocalMachines()
{
Process p = new Process();
p.StartInfo.FileName = "cmd.exe";
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardInput = true;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.RedirectStandardError = true;
p.StartInfo.CreateNoWindow = true;
p.Start();
p.StandardInput.WriteLine("arp -a");
p.StandardInput.WriteLine("exit");
ArrayList list = new ArrayList();
StreamReader reader = p.StandardOutput;
string IPHead = Dns.GetHostByName(Dns.GetHostName()).AddressList[0].ToString().Substring(0, 3);
for (string line = reader.ReadLine(); line != null; line = reader.ReadLine())
{
line = line.Trim();
if (line.StartsWith(IPHead))
{
string IP = line.Substring(0, 15).Trim(); string Mac = line.Substring(line.IndexOf("-") - 2, 0x11).Trim();
list.Add(IP);
}
}
return list;
}
}