Сетевая библиотека .NET - PullRequest
3 голосов
/ 22 мая 2010

Я искал приличную сетевую библиотеку для C #. Он будет использоваться с XNA 3.1 и .NET Framework 3.5. Многопользовательский стиль будет сервер и клиент. В настоящее время я изучаю библиотеку Lidgren , но она выглядит устаревшей

Кто-нибудь получил несколько хороших предложений для хорошей сетевой библиотеки. Он должен легко обрабатывать более 30 клиентских подключений одновременно.

Ответы [ 7 ]

10 голосов
/ 11 февраля 2013

Несмотря на то, что ничто не мешает вам писать весь сетевой код низкого уровня самостоятельно, использование библиотеки, безусловно, является отличным способом сэкономить массу времени и усилий, время, которое вы можете потратить на улучшение своего собственного приложения.

Библиотека, еще не упомянутая здесь: networkComms.net . Он обладает множеством сложных функций (таких как сериализация, сжатие и шифрование), но, учитывая количество соединений, он способен обрабатывать более 1000 соединений со скоростью передачи более 1 Гбит / с. Существует простая статья о , как создать приложение клиент-сервер , но вкратце вы можете отправить и получить следующее:

Для отправки:

//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);

Отказ от ответственности: я один из разработчиков этой библиотеки.

3 голосов
/ 29 мая 2010

Ваша ссылка действительно устарела; но если вы прочитаете страницу, она направит вас к более новой версии: http://code.google.com/p/lidgren-network-gen3/

2 голосов
/ 23 мая 2010

Как Лидгрен устарел? Это все еще единственный крупный игрок в .NET пространстве для игровых сетей .

2 голосов
/ 22 мая 2010

WCF - одна из возможностей, хотя для этого сценария он может быть немного тяжелым.Сокеты .NET, OTOH, часто слишком низкоуровневые;они не являются простым «компонентом», который нужно просто подключить (и сетевое, и многопоточное обучение должны быть изучены задолго до того, как класс Socket может быть использован правильно).является частью Nito.Async .Он устраняет соображения о многопоточности при программировании сокетов, а также включает в себя абстракцию более высокого уровня, которая обрабатывает обрамление сообщений и keepalive .

2 голосов
/ 22 мая 2010

Вы, кажется, ищете не в том месте.Похоже, вы не заглядывали в саму .NET Framework.

А как насчет использования WCF?Как насчет использования TcpListener?

Что вам нужно, чтобы они не обеспечивали?

1 голос
/ 22 мая 2010

Вы пробовали встроенные библиотеки .Net, найденные в System.Net? Маловероятно, что вам вообще понадобится использовать внешнюю библиотеку. Вот пример простого многопоточного TCP-сервера, и вы можете захотеть взглянуть и на UDP. Если вы просто немного погуглите, есть множество учебных пособий.

Попробуйте получить дополнительную информацию на странице System.Net.Sockets MSDN .

0 голосов
/ 04 октября 2018

На этом этапе я хотел бы добавить мою библиотеку в эту ветку. NuGet также доступен .

...