c# - 断开 TCPClient 并在另一端看到

标签 c# .net sockets tcpclient disconnect

我正在尝试断开客户端与服务器的连接,但服务器仍将其视为已连接。我找不到解决这个问题的方法,关机、断开连接和关闭都不起作用。

我与客户端断开连接并检查服务器的一些代码:

客户:

  private void btnDisconnect_Click(object sender, EventArgs e)
    {
        connTemp.Client.Shutdown(SocketShutdown.Both);
        connTemp.Client.Disconnect(false);
        connTemp.GetStream().Close();
        connTemp.Close();
    }

服务器:

    while (client != null && client.Connected)
            {
                NetworkStream stream = client.GetStream();
                data = null;

                try
                {
                    if (stream.DataAvailable)
                    {
                        data = ReadStringFromClient(client, stream);
                        WriteToConsole("Received Command: " + data);
                    }
                } // So on and so on...

代码中有更多的写入和读取。

希望大家帮帮忙。

更新:我什至尝试通过 ref 传递 TCP 客户端,假设存在范围问题并且即使在读取之后 client.Connected 仍然为真。出了什么问题?

第二次更新!!:

这是解决方案。偷看一下,并据此确定您是否已连接。

  if (client.Client.Poll(0, SelectMode.SelectRead))
                    {
                        byte[] checkConn = new byte[1];
                        if (client.Client.Receive(checkConn, SocketFlags.Peek) == 0)
                        {
                            throw new IOException();
                        }
                    }

最佳答案

这里是解决方案!

  if (client.Client.Poll(0, SelectMode.SelectRead))
                {
                    byte[] checkConn = new byte[1];
                    if (client.Client.Receive(checkConn, SocketFlags.Peek) == 0)
                    {
                        throw new IOException();
                    }
                }

关于c# - 断开 TCPClient 并在另一端看到,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3782471/

相关文章:

c# - 从 DataGridView 单元格中删除填充/边距

c# - 如何从sql中获取json格式的数据

c# - 使用 NAudio 转换为 WAV 后使用 SoundPlayer 播放 MP3

Java Socket 文件和目录列表名称显示在客户端

c# - 在 Entity Framework 中映射复合外键的多对多关系

c# - 将前一行值减去当前行并按日期排序

c# - MSSQL中子字符串的更新操作

c# - HttpUtility.HtmlAttributeEncode 的缺点

c - Arduino 处理开放网络套接字

python - 套接字刷新Python