簡體   English   中英

.NET中的套接字-多線程服務器入門

[英]Sockets in .NET - Getting started with a multithreaded server

使用C#進行網絡連接是我相對較新的事物,因此我想知道如何在特定項目中開始使用它。

最終,我想開發一種服務器,該服務器可以同時連接多達一千個客戶端(TCP協議)。

我知道為每個客戶端創建一個新線程可能會非常低效,尤其是在例如每個線程通過100個客戶端時,每個線程的內存開銷都很大。

簡而言之,我要問的是,任何人都可以建議我在任何地方找到更多有關開始為許多客戶端開發“多線程”服務器的信息。

(如果這個問題太籠統,請添加評論。)

您可以嘗試使用SignalR for sockets。

什么是SignalR
ASP.NET SignalR是面向ASP.NET開發人員的庫,它簡化了向應用程序添加實時Web功能的過程。 實時Web功能是使服務器代碼在內容可用時立即將其推送到連接的客戶端的功能,而不是讓服務器等待客戶端請求新數據的功能。
...
SignalR提供了一個簡單的API,用於創建服務器到客戶端的遠程過程調用(RPC),該過程從服務器端.NET代碼在客戶端瀏覽器(和其他客戶端平台)中調用JavaScript函數。 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支持的平台是:

  • 服務器端
    • Windows Server 2012
    • Windows Server 2008 R2
    • Windows 8
    • Windows 7的
    • Windows Azure
  • 客戶端
    • 瀏覽器
    • Microsoft Internet Explorer版本8、9、10和11。支持現代版本,桌面版本和移動版本。
    • Mozilla Firefox:當前版本-1,Windows和Mac版本。
    • Google Chrome:當前版本-1,Windows和Mac版本。
    • Safari:當前版本-1,Mac和iOS版本。
    • Opera:當前版本-1,僅適用於Windows。
    • Android瀏覽器
    • Windows桌面和Silverlight應用程序
    • Windows XP SP3或更高版本支持使用.NET 4的應用程序。
    • Windows Vista或更高版本支持使用.NET Framework 4.5的應用程序。
    • Windows應用商店和Windows Phone 8應用程序

默認性能常數確實可以滿足您最多1000個同時請求的限制。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM