_remote是服务器ip地址
public void LocalLinkAddress(string _remote, ref string strPCIP)
{using (TcpClient tcpclient = new TcpClient())
{
//try
//{
// tcpclient.Connect(_remote, 5567);
// if (tcpclient.Connected)
// {
// strPCIP = ((IPEndPoint)tcpclient.Client.LocalEndPoint).Address.ToString();
// CLog.Context.WriteLine(CLog.LogLevel.Info, "SOCKET: ", "Get local address succ:" + strPCIP);
// }
//}
//catch (Exception e)
//{
// CLog.Context.WriteLine(CLog.LogLevel.Info, "SOCKET: ", "Get local address error:" + e.Message);
//}
//finally
//{
// tcpclient.Close();
//}
try
{
IAsyncResult ar = tcpclient.BeginConnect(_remote, 5567, null, null);
WaitHandle waitHandle = ar.AsyncWaitHandle;
try
{
if (!ar.AsyncWaitHandle.WaitOne(TimeSpan.FromSeconds(10), false))
{
tcpclient.Close();
throw new TimeoutException();
}
else
{
tcpclient.EndConnect(ar);
strPCIP = ((IPEndPoint)tcpclient.Client.LocalEndPoint).Address.ToString();
ConnectDB();
CLog.Context.WriteLine(CLog.LogLevel.Info, "SOCKET: ", "Get local address succ:" + strPCIP);
}
}
catch (Exception ex)
{
CLog.Context.WriteLine(CLog.LogLevel.Info, "SOCKET: ", "Get local address error:" + ex.Message);
}
finally
{
waitHandle.Close();
}
}
catch (Exception ex)
{
CLog.Context.WriteLine(CLog.LogLevel.Info, "SOCKET: ", "Get local address error:" + ex.Message);
}
}
}
本文介绍了一个使用C#编写的函数,该函数通过尝试连接到指定的远程服务器来获取本机的IP地址。此方法利用了TCP客户端进行异步连接,并在成功建立连接后返回本地IP地址。

4万+

被折叠的 条评论
为什么被折叠?



