我一直在尋找一個體面的C#網絡庫。它將與XNA 3.1和.NET Framework 3.5一起使用。 多玩家風格將成爲服務器和客戶端。 目前我一直在尋找Lidgren Library Network,但它似乎過時了。.NET網絡庫
任何人都有一個好的網絡圖書館的建議。它應該能夠一次處理30個以上的客戶端連接。
我一直在尋找一個體面的C#網絡庫。它將與XNA 3.1和.NET Framework 3.5一起使用。 多玩家風格將成爲服務器和客戶端。 目前我一直在尋找Lidgren Library Network,但它似乎過時了。.NET網絡庫
任何人都有一個好的網絡圖書館的建議。它應該能夠一次處理30個以上的客戶端連接。
您的鏈接確實已過時;但是如果您閱讀該頁面,它將引導您訪問新版本:http://code.google.com/p/lidgren-network-gen3/
您似乎正在尋找錯誤的地方。您似乎沒有查看.NET Framework本身。
如何使用WCF?那麼使用TcpListener
怎麼樣?
你需要什麼,這些不提供?
WCF是一種可能性,雖然它可能對這種情況有點重量級。 .NET套接字OTOH通常太低級;它們並不是一個簡單的「組件」,只需要插入即可(在Socket類可以正確使用之前,網絡和多線程都必須很好地學習)。
我寫了一個庫,Nito.Async.Sockets,它是Nito.Async的一部分。它從套接字編程中刪除了多線程的考慮因素,還包含處理message framing和keepalives的更高級抽象。
在撰寫本文時我不會推薦Nito.Async(v1)。來自Nito.Async站點的引用「當前的Nito.Async.Sockets API已被凍結,將開發一個新的(v2)API,它可以更好地分離協議組件(例如,消息幀類型,存儲系統等)都是正交的),新的API可能基於Rx框架,但更有可能被綁定到.NET 4.0 Task Parallel Library中。「 – 2014-01-02 05:33:59
Nito.Async.Sockets仍然可用; v2 API已經計劃好幾年了,但我沒有時間去做。 – 2014-01-02 11:08:15
lidgren如何過時?它仍然是.NET space for gaming networking唯一的主要球員。
雖然沒有什麼能夠阻止您自己編寫所有低級網絡代碼,但使用庫絕對是一種節省時間的好方法和壓力,你可以更好地花費改進自己的應用程序的時間。
這裏沒有提到的圖書館是networkComms.net。它具有許多複雜的功能(例如序列化,壓縮和加密),但只要提到您提及的連接數量,它就能夠處理1000個連接,傳輸速率爲1Gbps +。有一篇關於how to create a quick client server application的簡單文章,但簡而言之,您可以發送和接收如下。
派:
//This is the simplest way to send with more advanced options also available
//Parameters are message type, IP address, port and the object to send
NetworkComms.SendObject("Message", "127.0.0.1", 10000, "Networking in one line!")
要接收:
//We need to define what happens when packets are received.
//To do this we add an incoming packet handler for
//a 'Message' packet type.
//
//This handler will automatically convert the incoming raw bytes into a string
//(this is what the <string> bit does) and then write that string to the
//local console window.
NetworkComms.AppendGlobalIncomingPacketHandler<string>("Message", (packetHeader, connection, incomingString) => { Console.WriteLine("\n ... Incoming message from " + connection.ToString() + " saying '" + incomingString + "'."); });
//Start listening for incoming 'TCP' connections. The true
//parameter means try to use the default port and if that
//fails just choose a random port.
//See also UDPConnection.StartListening()
TCPConnection.StartListening(true);
免責聲明:我的開發人員爲這個圖書館之一。
您的所有帖子都是您的網站的廣告,而且他們都沒有透露這一事實。 – 2013-02-11 17:36:59
@AndrewBarber - 爲了記錄,我是networkComms.net的開發人員之一。我從來沒有試圖隱瞞,我會修改我的個人資料,以澄清現在。 – MarcF 2013-02-11 17:43:28
請務必仔細閱讀[自助推廣常見問題](http://stackoverflow.com/faq#promotion)。具體來說,如果您的帖子很多都是促銷活動,請參閱其中說明的部分,您可能是出於錯誤原因在此處。另請注意,每次鏈接到您自己的網站/產品時,您都必須*發佈免責聲明。 – 2013-02-11 17:44:48
如果圖書館是用VB.NET編寫的,它會好嗎? – 2010-05-22 12:16:07
@John Saunders:如果庫是一個編譯過的a。網絡彙編,它將在CIL中,所以它不會影響源語言。 – 2010-05-22 12:32:03
@Callum:謝謝,我知道。我問Mark,因爲他要求一個「C#網絡庫」。 – 2010-05-22 15:20:25