首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

c# winform 远程桌面时怎么获得本地IP

2012-02-16 
c# winform 远程桌面时如何获得本地IPc# winform程序远程桌面时如何获得本地IP例如:电脑A通过远程桌面连接

c# winform 远程桌面时如何获得本地IP
c# winform程序 
远程桌面时如何获得本地IP
例如:电脑A通过远程桌面连接电脑B上的程序,如何在这个程序里获得A的IP地址


[解决办法]

C# code
   //获取远程主机IP   public string[] getRemoteIP(string RemoteHostName)   {    IPHostEntry ipEntry = Dns.GetHostByName(RemoteHostName);    IPAddress[] IpAddr = ipEntry.AddressList;    string[] strAddr = new string[IpAddr.Length];    for (int i = 0; i < IpAddr.Length;i++ )    {        strAddr[i] = IpAddr[i].ToString();    }    return(strAddr);   }
[解决办法]
哈哈~ 看看这段代码~ 

服务器端做一个程序,设定好IP地址和端口号,启动Listening事件

客户端直接用TCP/ip协议连接服务器的IP和端口号,发送请求事件,获取返回内容

这个是以前写的一个小程序的代码,你可以看看有没有帮助:

private void StartServer()
{
string strIP = txtServerIP.Text.Trim();
string strPort = txtServerPort.Text.Trim();
string strFolder = this.txtSavePath.Text.Trim();
Regex re = new Regex(@"^([\d]{4,5})$");
Regex re1 = new Regex(@"^\d{2,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$");
if (!re1.Match(strIP).Success)
{
MessageBox.Show("服务器地址错误!");
txtServerIP.Focus();
}
else
{
if (!re.Match(strPort).Success)
{
MessageBox.Show("服务器端口号错误,正确的端口号应为1024-65535之间!");
txtServerPort.Focus();
}
else
{
int intPort = Convert.ToInt32(strPort);
if (intPort < 1024 || intPort > 65535)
{
MessageBox.Show("服务器端口号错误,正确的端口号应为1024-65535之间!");
txtServerPort.Focus();
}
else
{
if (strFolder == "")
{
MessageBox.Show("错误的文件保存路径");
txtSavePath.Focus();
}
else
{
if (!System.IO.Directory.Exists(strFolder))
{
MessageBox.Show("错误的文件保存路径");
txtSavePath.Focus();
}
else
{
if (strFolder.Substring(strFolder.Length - 1, 1) != "\\") strFolder += "\\";
MyServer server = new MyServer();
txtServerIP.Enabled = false;
txtServerPort.Enabled = false;
txtSavePath.Enabled = false;
blnIsOpen = true;
this.button1.Enabled = false;
this.button2.Enabled = true;
listBox1.Items.Clear();
listBox1.Items.Add("正在启动监听......");
server.Folder = strFolder;
server.IP = strIP;
server.Port = intPort;
Thread th = new Thread(new ThreadStart(server.Start));
th.IsBackground = true;
th.Start();
while (blnIsOpen)
{
Application.DoEvents();
string strMsg = server.State;
string strErr = server.Error;
if (strMsg != "")
{
if (listBox1.Items.Count > 100)
{
listBox1.Items.Clear();
}
listBox1.Items.Add(strMsg);
server.State = "";
}
if (strErr != "")
{
txtErr.Text += "\r\n" + System.DateTime.Now + " " + strErr;
server.Error = "";
th.Abort();
intErrNum++;
this.tabPage2.Text = "错误信息(" + intErrNum.ToString() + ")";
}
if (server.NeedReset)
{
//th.Abort();
StartServer();
}
}
}
}
}
}
}
}



public class MyServer
{
string strState = "";
string strErr = "";
string strIP = "";
int intPort = 0;
bool blnClose=false;
TcpListener listener;
string strPath = "";
bool blnNeedReset = false;
public MyServer()
{
blnClose = false;
}

public void Start()
{
strErr = "";
try
{
listener = new TcpListener(IPAddress.Parse(strIP), intPort);
Application.DoEvents();
listener.Start(200);
strState = "启动成功,正在监听是否有连接进入......";
Application.DoEvents();


while (!blnClose)
{
Application.DoEvents();
TcpClient client = listener.AcceptTcpClient();
Socket s = client.Client;
strState = DateTime.Now+" 已有客户端连接:"+s.RemoteEndPoint.ToString();
NetworkStream stream = client.GetStream();
byte[] msg = new byte[256];
int bytes = stream.Read(msg, 0, msg.Length);
string strMsg = System.Text.Encoding.Default.GetString(msg, 0, bytes);
Application.DoEvents();
string strTempMsg=DownLoadFile(strMsg);
//strState = "正在返回数据...";
Application.DoEvents();
//
byte[] byteResponse = System.Text.Encoding.Default.GetBytes(strTempMsg);
stream.Write(byteResponse, 0, byteResponse.Length);
Application.DoEvents();
//strState = "返回信息成功!";
s.Close();
client.Close();
}
}
catch (Exception err)
{
listener.Stop();
strErr = "MyServer.Start错误:" + err.Message;
blnNeedReset = true;
}
}
[解决办法]
//使用 GetHostAddresses 方法将 IP 地址解析为 IPAddress 类型的数组,
将其转换为string类型赋值给要显示的控件即可

string hostname=Dns.GetHostName();

public void DoGetHostAddresses(string hostname)
{
IPAddress[] ips;

ips = Dns.GetHostAddresses(hostname);

Console.WriteLine("GetHostAddresses({0}) returns:", hostname);

foreach (IPAddress ip in ips)
{
//Console.WriteLine(" {0}", ip);
this.textBox1.Text = ip.ToString();

}
}

[解决办法]

C# code
   private void  GetIP()        {            string HostName = Dns.GetHostName();//通过DNS获得当前主机的主机名            IPAddress[] AllIpList = Dns.GetHostAddresses(HostName);//获得当前主机的所有的IP 包括内网和外网的            string LocalIp = AllIpList[0].ToString();//本机局域网内的IP            IPHostEntry NetWorkIP = Dns.GetHostByName(HostName);            string NetIp = NetWorkIP.AddressList[NetWorkIP .AddressList .Length -1].ToString(); //获得本机外网的IP 也就是常说的ADSL的IP地址            MessageBox.Show(LocalIp + "   " + NetIp);        } 

热点排行