日期:2014-05-18  浏览次数:21111 次

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 = "启动成功,正在监听是否有连