3

我写这篇文章是为了找出为什么下面的代码会导致超级套接字服务器设置失败。

    var appServer = new AppServer();
    if (!appServer.Setup(8080)){
        MessageBox.Show("Failed!");
    }

我在防火墙中添加了允许端口 8080 的规则,因为我的防火墙由公司 IT 启用。不知道为什么设置失败。有解释吗?

4

1 回答 1

3

在使用以下内容在控制台应用程序中进行本地测试(需要 NuGet 包SuperSocketSuperSocket.Engine;

namespace SupersocketTest
{
    using System;
    using SuperSocket.SocketBase;

    class Program
    {
        static void Main(string[] args)
        {
            var server = new AppServer();
            bool success = server.Setup(8080);
            Console.WriteLine($"Server setup: {success}");
            Console.ReadKey();
        }
    }
}

操作成功完成。

看网上的代码,底层连接还是有Socket基础的(正如包名所暗示的那样)。因此,它受制于有关套接字如何在 .NET 中正常工作的所有规则。

可能导致Socket设置失败的事情有(但不限于)

  • 插座正在使用中
  • 套接字已关闭
  • 操作系统已用完可用的套接字(不太可能,但在技术上是可能的)

如果没有关于您得到的异常的更多详细信息,我只能猜测,但我怀疑套接字正在使用中,因为它是另一个应用程序可能正在使用8080的常见替代方案。80

于 2018-02-28T11:25:06.710 回答