1

C# 中的网络是我相对较新的东西,所以我想知道如何在特定项目中开始使用它。

最终,我想开发一个服务器,它可以同时连接多达一千个客户端(TCP 协议)。

我知道为每个客户端创建一个新线程可能会非常低效,尤其是当每个线程的内存开销通过 100 个客户端时。

很简单,我要问的是,任何人都可以在任何地方建议我可以找到更多关于开始为许多客户开发“多线程”服务器的信息。

(如果这个问题太宽泛,请添加评论。)

4

1 回答 1

2

您可以尝试SignalR使用套接字。

是什么SignalR
ASP.NET SignalR 是一个供 ASP.NET 开发人员使用的库,它简化了向应用程序添加实时 Web 功能的过程。实时 Web 功能是让服务器代码在内容可用时立即将内容推送到连接的客户端的能力,而不是让服务器等待客户端请求新数据。
...
SignalR提供了一个简单的 API,用于创建服务器到客户端的远程过程调用 (RPC),它JavaScript从服务器端 .NET 代码调用客户端浏览器(和其他客户端平台)中的函数。SignalR还包括用于连接管理(例如,连接和断开事件)和分组连接的 API。

在此处输入图像描述

要实现服务器,您需要从Hub类派生:

using System;
using System.Web;
using Microsoft.AspNet.SignalR;
namespace SignalRChat
{
    public class ChatHub : Hub
    {
        public void Send(string name, string message)
        {
            // Call the broadcastMessage method to update clients.
            Clients.All.broadcastMessage(name, message);
        }
    }
}

从客户端javascript是这样的:

var chat = $.connection.chatHub;
chat.client.broadcastMessage = function (name, message) {
  // interact with server
}
$.connection.hub.start().done(function () {
    $('#sendmessage').click(function () {
        // Call the Send method on the hub. 
        chat.server.send($('#displayname').val(), $('#message').val());
        // Clear text box and reset focus for next comment. 
        $('#message').val('').focus();
    });
});

支持的平台SignalR有:

  • 服务器端
    • 视窗服务器 2012
    • 视窗服务器 2008 r2
    • 视窗 8
    • Windows 7的
    • 视窗天青
  • 客户端
    • 浏览器
    • Microsoft Internet Explorer 版本 8、9、10 和 11。支持现代、桌面和移动版本。
    • Mozilla Firefox:当前版本 - 1,Windows 和 Mac 版本。
    • Google Chrome:当前版本 - 1,Windows 和 Mac 版本。
    • Safari:当前版本 - 1,Mac 和 iOS 版本。
    • Opera:当前版本 - 1,仅限 Windows。
    • 安卓浏览器
    • Windows 桌面和 Silverlight 应用程序
    • Windows XP SP3 或更高版本支持使用 .NET 4 的应用程序。
    • Windows Vista 或更高版本支持使用 .NET Framework 4.5 的应用程序。
    • Windows 应用商店和 Windows Phone 8 应用程序

默认性能常数确实涵盖了最多 1000 个同时请求的限制。

于 2017-04-12T15:11:39.107 回答