我一直在寻找一个体面的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