早就写了C# Socket+Flash的聊天程序,因为内网的ip,一直没有拿出来,还有就是bug n多,这几天又在看C#,就想做个C# Socket+Flash游戏大厅,就把聊天程序拿出来检察一下,其他问题都很好解决,可是在flash没有按下退出按钮时候去关闭页面,就会让主机得不到客户机退出的休息,msdn+Google:
TcpClient 的派生类可使用此属性(active)来确定连接尝试是否已成功。此属性不监视 TcpClient 连接的当前状态。如果远程主机关闭连接,将不更新 Active。
可使用 Connected 属性来获取 Socket 的连接状态。此属性将返回 Socket 的最新已知状态。当它返回 false 时,表明 Socket 要么从未连接,要么已断开连接。即使 Connected 返回 true,也无法保证 Socket 仍处于 Connected 状态。true 值仅意味着在上次 I/O 操作时 Socket 处于连接状态。
都没有查出来,郁闷了一天,后来在实用其他办法的时候偶然检察一下服务端得到的信息,竟然发现在flash关闭的时候服务端会得到一个空数据,哈哈,利用这个对所有的客户端返回一个值,就能catch到刚才关闭的客户机:
try
{
//MessageBox.Show(message);
byte[] buffer = System.Text.Encoding.UTF8.GetBytes(message.ToCharArray());
cl.Sock.Send(buffer,buffer.Length,0);
}
catch(Exception)//如果有异常则退出
{
}
毫不客气的Remove掉···
终于解决了,忍不住
自己一个。。。哈哈哈哈哈。。。。。。。。。。。。。。
回复Comments
{commenttime}{commentauthor}
{CommentUrl}
{commentcontent}