Моно-совместимая сетевая библиотека/библиотека сокетов
-
05-07-2019 - |
Вопрос
Существуют ли какие-либо сетевые/сокетные библиотеки, совместимые с Mono (C#)?
Предпочтительно что-то такое:
- Многопоточный
- Управляемый событиями
- Возможность нескольких подключений
- Обрабатывает клиентские и серверные части
- Работает в средах выполнения Mono и MS .NET.
- Очень просто
- Бесплатно (и можно использовать в коммерческом программном обеспечении)
А еще было бы очень здорово, если бы это было:
- Совместимость с .NET Compact Framework (Windows Mobile)
- Совместимость с MonoTouch (iPhone)
Редактировать:
Чтобы уточнить больше, под своим комментарием «на один уровень выше TCP/IP» я имел в виду, что мне нужно что-то, что по сути является автономным сервером/клиентом.Я не хочу иметь дело с написанием кода потоков, обработкой каждого соединения и т. д.Например, мне бы хотелось, чтобы код выглядел так:
Server s = new Server(8080);
s.NewConnection += new ConnectionEventHandler(NewConnection);
s.DataRecieved += new DataEventHandler(NewData);
s.Start();
void NewConnection(object sender, EventArgs e)
{
s.Send((Connection)sender, "Hello World!"); //(Connection)sender is the connection instance so the server knows which to send the response to
}
void NewData(object sender, EventArgs e)
{
s.Send((Connection)sender, e.Data); //Echo back
}
Не самый чистый код, но я думаю, что он дает основную идею.
Решение
Что-то подобное сейчас существует, оформить заказ сетьComms.net.Делает все, что вам нужно, а также на 100% совместим с моно.
Отказ от ответственности:Я один из разработчиков этой коммерческой библиотеки.
Другие советы
Нет, нет ничего нестандартного, что делало бы то, что вы хотите.
TcpClient/TcpListenr уже находятся на один уровень выше класса Socket.Если вам действительно нужно что-то еще более простое, очень легко обернуть TcpListener() и предоставить ему нужные вам точки входа обработчика событий.
Вам следует проверить Удаленное взаимодействиеLite.Я использую его со своими моно-приложениями.Он был разработан для помощи в сетевом аспекте библиотеки распределенных вычислений. МПАПИ.MPAPI ставил перед собой цель обеспечить 100% совместимость с Mono.
Мне неясно, чего именно вы ожидаете от класса, который находится «на один уровень выше TcpClient и TcpListener»?
TcpClient/TcpListener — это основные строительные блоки, которые следует использовать при разработке.Я не уверен, поддерживаются ли они и в Mono, но если да, то это все, что вам нужно.
.Net CompactFramework также поддерживает их, хотя насчет Mono Touch я не уверен.