C# Socket关闭开启功能问题

weixin_47256859 2021-01-13 10:05:25
这是关闭按钮对应的事件
/// <summary>
/// 关闭服务器
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void Code_Click(object sender, RoutedEventArgs e)
{

if (startandstop == false)
{
startandstop = true;
Start.IsEnabled = true;
Code.IsEnabled = false;
if (socketSend != null && socketSend.Connected)
{
socketSend.Shutdown(SocketShutdown.Both);
socketSend.Close();
socketWatch.Close();
disSocket.Clear();
}
}
timer_2.Stop();
}

这个是开启按钮的事件
Thread th;
/// <summary>
/// 开启服务,监听连接
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
bool startandstop = true;
private void Start_Click(object sender, RoutedEventArgs e)
{

if (startandstop)
{
startandstop = false;
Start.IsEnabled = false;
Code.IsEnabled = true;
}
Startsocket();
th = new Thread(ListenClickConnect);
th.IsBackground = true;
th.Start(socketWatch);
timer_2.Start();
}

当有客户端连接的时候可以正常使用不会报错,没有连接的时候点击开启正常,关闭正常,再开启就报错“通常一套字节只允许使用一次”
有没有大佬帮忙看看调整一下
...全文
1255 3 打赏 收藏 举报
写回复
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
gs0038 2021-01-13
说明你没有关闭socket
  • 打赏
  • 举报
回复
weixin_47256859 2021-01-13
引用 楼主 weixin_47256859 的回复:
这是关闭按钮对应的事件
/// <summary>
        /// 关闭服务器
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void Code_Click(object sender, RoutedEventArgs e)
        {

            if (startandstop == false)
            {
                startandstop = true;
                Start.IsEnabled = true;
                Code.IsEnabled = false;
                if (socketSend != null && socketSend.Connected)
                {
                    socketSend.Shutdown(SocketShutdown.Both);
                    socketSend.Close();
                    socketWatch.Close();
                    disSocket.Clear();
                }
            }
            timer_2.Stop();
        }
这个是开启按钮的事件
Thread th;
        /// <summary>
        /// 开启服务,监听连接
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        bool startandstop = true;
        private void Start_Click(object sender, RoutedEventArgs e)
        {
            
            if (startandstop)
            {
                startandstop = false;
                Start.IsEnabled = false;
                Code.IsEnabled = true;
            }
            Startsocket();
            th = new Thread(ListenClickConnect);
            th.IsBackground = true;
            th.Start(socketWatch);
            timer_2.Start();
        }
当有客户端连接的时候可以正常使用不会报错,没有连接的时候点击开启正常,关闭正常,再开启就报错“通常一套字节只允许使用一次” 有没有大佬帮忙看看调整一下
在判断下面加else再close
  • 打赏
  • 举报
回复
weixin_47256859 2021-01-13
已经解决了。
  • 打赏
  • 举报
回复
发帖
C#

10.8w+

社区成员

.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
帖子事件
创建了帖子
2021-01-13 10:05
社区公告

让您成为最强悍的C#开发者