【问题标题】:Turning server on/off line C#开启/离线服务器 C#
【发布时间】:2015-03-07 03:00:15
【问题描述】:

我正在为 C# 中的服务器设置一个简单的客户端。我有两个单独的程序。我试图让我的服务器能够通过使用复选框来在线或离线。我在网上看了,发现可以使用socket.blocking?但我尝试实现它,但它不起作用。当我检查文本框以使服务器脱机时出现错误,提示“对象引用未设置为对象的实例。”。这是我的复选框功能中的代码:

if (checkBox1.Checked)
{
    server.Blocking = true;
}
else
{
    server.Blocking = false;
}

我这样做是否正确?我不希望服务器关闭,而是对客户端不可用。这就是为什么我认为阻塞方法是最好的?

任何帮助将不胜感激 谢谢

【问题讨论】:

  • 离题,但该代码可以简化为server.Blocking = checkBox1.Checked;
  • 我重新打开了,因为 NRE 是这个问题的次要问题。

标签: c# sockets client-server server


【解决方案1】:

服务器应该在 Listen 或 BeginListen 调用中。当用户取消选中服务器 UI 上的框时,您希望停止监听。如果您使用的是 TcpServer,请使用 Stop 方法。对于 Socket,使用 Shutdown 后跟 Close。正在监听的任何例程或线程都可能存在异常。

使用这两个课程,您基本上是在拆毁所有内容。没有简单的“暂时停止收听”属性。当他们取消选中该框时,您需要拆除套接字,然后当他们再次选中该复选框时,您需要从头开始构建一个新的 Socket 或 TcpServer。最接近的方法是继续接受连接,但一旦有人连接就立即关闭它们。我不喜欢这种方法。

在拆卸过程中正确的协议喋喋不休作为练习:) IOW,考虑搜索如何正确拆卸 Socket 或 TcpServer 对象以及如何完成挂起的读取和写入。

H^2

【讨论】:

    猜你喜欢
    • 2011-05-10
    • 1970-01-01
    • 2012-03-20
    • 1970-01-01
    • 2013-08-17
    • 2022-11-03
    • 1970-01-01
    • 2012-12-12
    • 2022-12-19
    相关资源
    最近更新 更多