我在两台机器上都提供Socket服务器端程序,
我客户端程序想如果第一台挂掉,客户端就连第二台!如下写法:_sockC = new SocketClient(); //SocketClient为Socket客户端的构造类,构造函数里没做什么事
this._ServerIp =“192.168.0.3”;
this._Port = this._Port1;
_sockC.Connect(this._ServerIp,this._Port,_TimeOut);//Connect为SocketClient类中的一个方法
if(!_sockC.Connected)
{
_log.Writeline("Connect Remote Server Fail:"+this._ServerIp);
//更换服务2地址,端口
this._ServerIp = =“192.168.0.4”;
this._Port = this._Port2;
_sockC.Connect(this._ServerIp,this._Port,_TimeOut);
if(!_sockC.Connected)
{
_log.Writeline("Connect Remote Server Fail:"+this._ServerIp);
return;
}
}现在发生奇怪问题,
如果3端服务开启,4端服务不管开启还是关闭,都是连接成功的!
如果3端服务关闭,4端开启,它就报两个连接都不成功。server2端服务是没有问题的!
因为我把程序中的“192.168.0.3”,“192.168.0.4”互换,即先检查4是否可以连接时,
如果4端服务开启,3端服务不管开启还是关闭,都是连接成功的!
如果4端服务关闭,3端服务开启都是连接成功的!它就报两个连接都不成功。问题怪就怪在,如果查询的第一个是失败的,后面一个一定也返回连接失败!没有达到设计目的请高手指点一下!问题可能出在哪?很快揭帖!
我客户端程序想如果第一台挂掉,客户端就连第二台!如下写法:_sockC = new SocketClient(); //SocketClient为Socket客户端的构造类,构造函数里没做什么事
this._ServerIp =“192.168.0.3”;
this._Port = this._Port1;
_sockC.Connect(this._ServerIp,this._Port,_TimeOut);//Connect为SocketClient类中的一个方法
if(!_sockC.Connected)
{
_log.Writeline("Connect Remote Server Fail:"+this._ServerIp);
//更换服务2地址,端口
this._ServerIp = =“192.168.0.4”;
this._Port = this._Port2;
_sockC.Connect(this._ServerIp,this._Port,_TimeOut);
if(!_sockC.Connected)
{
_log.Writeline("Connect Remote Server Fail:"+this._ServerIp);
return;
}
}现在发生奇怪问题,
如果3端服务开启,4端服务不管开启还是关闭,都是连接成功的!
如果3端服务关闭,4端开启,它就报两个连接都不成功。server2端服务是没有问题的!
因为我把程序中的“192.168.0.3”,“192.168.0.4”互换,即先检查4是否可以连接时,
如果4端服务开启,3端服务不管开启还是关闭,都是连接成功的!
如果4端服务关闭,3端服务开启都是连接成功的!它就报两个连接都不成功。问题怪就怪在,如果查询的第一个是失败的,后面一个一定也返回连接失败!没有达到设计目的请高手指点一下!问题可能出在哪?很快揭帖!
//===========属性用来判断Socket是否处于连接状态===============================
public bool P_Connected
{
get
{
if(m_ClientSocket != null && m_ClientSocket.Connected)
{
return true;
}
else
{
return false;
}
}
}
//=========对外公布的方法===============================
public bool F_Connect()
{
try
{
if(P_Connected)
{
return true;
}
else
{
for(int i = 0; i < ServerList.Count; i++)
{
if(F_Connect(i))
{
return true;
}
else
{
continue;
}
} return false;
}
}
catch(Exception ex)
{
return false;
}
}
//========================================================
private bool F_Connect(int _ServerId)
{
try
{
if(_ServerId >= 0 && _ServerId <= ServerList.Count)
{
m_ServerIpAddress = (IPAddress)ServerList[_ServerId];
if( F_ProcessConnect() ) //此方法进行连接,成功返回true,失败返回false
{
return true;
}
else
{
return false;
}
}
else
{
return false;
}
}
catch(Exception ex)
{
return false;
}
}