我仅仅说下出错这块的逻辑。我要做的就是调用Socket.BeginConnect来连接远程服务器。
我的程序要隔一段时间发送一次数据,发送前要判断下现在是不是连接状态,不是的话先调用连接方法。
当我第一次开启我的定时发送功能,调用下面的Connect方法成功连接了。然后后面会发送些数据,等到一段固定时间后,需要再次发送数据,由于已经隔了一段时间,先调用了IsConnected,返回值为false未连接,所有再次调用了Connect方法,结果报的错误为
在一个已经连接的套接字上做连接请求小弟这里非常不解,Connected属性明明为false,为什么说在已经连接的套接字上请求连接,还请各位大神赐教
主要代码如下:Server就是我的socket变量
/// <summary>
/// 连接是否开启
/// </summary>
public bool IsConnected
{
get
{
if (Server != null)
{
return Server.Connected;
}
else
return false;
}
}
/// <summary>
/// 开启连接
/// </summary>
/// <param name="connectionProperty">连接属性</param>
/// <returns>返回连接是否成功</returns>
public bool Connect(ConnectProperty connectionProperty)
{
if (!IsConnected)
{
//这里没有连接才会进来,觉得与后面报的错冲突,小弟十分不解
//Server.Connect(connectionProperty.IP, connectionProperty.Port);
IPEndPoint iep = new IPEndPoint(connectionProperty.IP, connectionProperty.Port);
IAsyncResult ar = Server.BeginConnect(iep, new AsyncCallback(Connected), Server);//这是出错的语句!!!
//后面是判断是否连接成功,与问题无关
}
else
{
//连接已经开启
return true;
}
}