_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);
}
}
}