MUSCLE

Софтуер снимки:
MUSCLE
Софтуер детайли:
Версия: 6.82 актуализира
Дата на качване: 22 Jun 18
Розробник: Jeremy Friesner
Разрешително: Безплатно
Популярност: 26

Rating: 5.0/5 (Total Votes: 1)

MUSCLE е мултиплейър сървър за клиентски връзки и е безплатна, надеждна, мащабируема и платформена система за съобщения с отворен код, която се състои от сървърни и клиентски компоненти. Тя ще ви помогне да напишете различни видове софтуер, от мултиплейър игри и IRC чат клиенти, до приложения за изчисляване на SETI.


Характеристики с един поглед

С MUSCLE, потребителите ще могат лесно да персонализират включения "мускулест сървър", като определят собствената логика на сесията или протокола за стрийминг на съобщения. Софтуерът ви помага да напишете кода на клиента си в програмните езици C ++, C, C #, Java, Delphi или Python.

Програмата използва BMessage-like muscle :: Съобщения, поддържа изпращането на сплескани мускули :: Съобщенията между компютрите чрез потоци от TCP (Transmission Control Protocol), разгръщат мускулен сървър & rdquo; на сървърна машина, което ви позволява да пишете клиентски програми, които могат да се използват за комуникация със сървъра.

Освен това тя включва API за съобщения с един и няколко вида, които поддържат всички горепосочени езици за програмиране. Сървърът с мускули & rdquo; може лесно да се персонализира чрез дефиниране на протокол за поточно предаване на съобщения или логика на сесията.

Запознаване с MUSCLE

След успешно влизане клиентските програми могат да определят кой друг е влязъл в централния сървър, както и да съхранява мускулите :: Съобщения в RAM (системна памет) и изпращане на мускули :: Съобщения до други клиенти, които са свързани към сървъра. Имайте предвид, че клиентските програми могат да се абонират за конкретни данни на сървъра и да получават незабавни известия, когато данните се променят.


Поддържа широка гама от маршрути за съобщения

Софтуерът е разработен, за да поддържа широк кръг съобщения, включително и в стил "unicast", в стил "излъчване" и "многоканален", чрез интелигентен йерархичен маршрутизиращ механизъм.
Поддържани операционни системи и наличност

MUSCLE работи на всяка POSIX-съвместима операционна система. Той се разпространява като единствен универсален архив на източниците, който позволява на потребителите да оптимизират приложението за своята GNU / Linux система. И в двата случая се поддържат 32-битови и 64-битови хардуерни платформи.

Какво ново в това издание:

  • тестове / Makefile-mt вече не се опитва да състави сесия на теста, освен когато се изпълнява в операционна система, поддържана от testreflectsession.
  • Проведоха ли някои незначителни редактиране и пренареждане на "MUSCLE by Example" страници.
  • Заменил няколко "маркера" в MkDocs с [URL] (...)
  • Премахнато частно наследство на CountedObject от всички класове, които са го имали - вместо това те включват частна променлива CountedObject. Това беше направено само защото цялото това частно наследство затрупваше графиките за наследяване на DOxygen.
  • Добавя макрос DECLARE_COUNTED_OBJECT към CountedObject.h, така че всяка потенциална оперативна памет на CountedObjects може да бъде елиминирана в случаите, когато не е желано броене на обекти.
  • Премахнахте поддръжката на -DMUSCLE_AVOID_OBJECT_COUNTING и добавихте -DMUSCLE_ENABLE_OBJECT_COUNTING макрос на негово място. (Т.е. класа CountedObject вече е деактивиран по подразбиране и трябва да бъде изрично активиран, за да го използвате)
  • Добавена е "MUSCLE by Example" документацията за MiscUtilityFunctions. {cpp, h}
  • Промени редица маркери в MUSDLE-by-Example MkDocs източника в [urls], така че методите, които споменават, могат бързо да бъдат прегледани.
  • сървърът / Makefile сега указва libmuscle.a след главния () .o файл.
  • Фиксирани са някои предупреждения за gcc в папката с тестове (по предложенията на Mika)
  • UnparseFile () не цитираше ключови думи с правилни интервали. Фиксирана.
  • Фиксираните зависимости в "MUSCLE by Example" примерите 'Makefiles.

Какво ново във версията:

  • Добавен е удобен за ShrinkToFit и класове на струните. Този метод намалява обекта така, че вътрешното му количество памет съответства на размера на данните, които действително държи.
  • Hashtable :: EnsureSize () и Queue :: EnsureSize () вече приемат допълнителен аргумент (allowShrink), който (ако е настроен на true) позволява вътрешно разпределеният масив на обекта да бъде преразпределен по-малък, ако е по-голям от необходимото.
  • Оптимизирахте поведението на буфера за разширяване на класа на String, за да бъде малко по-ефективно.
  • Добавена е защита срещу потенциално безкрайно рекурсиране, което може да възникне, докато се регистрирате "OUT OF MEMORY" грешка след неуспешно разпределение на паметта, ако LogCallback се опита да разпредели паметта.

Какво е новото във версия 6.01:

  • Добавен удобен метод PrependWord () за класа на String.
  • Добавени са с методите за удобство () за класа на String.
  • Добавен е метод SetExplicitDelayMicros () към класа DetectNetworkConfigChangesSession.
  • Добавен е метод IsCopperDetected () към класа NetworkInterfaceInfo, така че кодът може да покаже дали Ethernet жакът има свързан към него кабел или не.
  • Добавено е & quot; quietsend & quot; аргумент към hexterm.
  • Виртуалният метод NetworkInterfacesChanged () в класа DetectNetworkConfigChangesSession е променен, за да вземе аргумент, който извиква кои мрежови интерфейси по-специално са се променили. Тази функционалност понастоящем се изпълнява само под Linux, MacOS / X и Windows. За други операционни системи аргументът винаги ще бъде празен.
  • Отстранена е грешка в изпълнението на Linux на DetectNetworkConfigChangesSession, което би могло да причини повреда на сегментацията, ако recvmsg () върна грешка (например поради получен сигнал).

Какво е новото във версия 6.00:

  • Пренапишете класа SSLSocketDataIO, за да работи по-добре с не-блокиращ I / O (във връзка с новия клас SSLSocketAdapterGateway).
  • Добавени са внедряванията на SSLSocketDataIO :: SetPrivateKey () и SSLSocketDataIO :: SetCertificate (), които приемат ByteBuffer като аргумент.
  • Добавен е клас SSLSocketAdapterGateway, който се използва за управление на вътрешната машина на OpenSSL, когато използвате клас SSLSocketDataIO с вашия шлюз.
  • Добавени са методите SetSSLPrivateKey () и GetSSLPrivateKey () към класа ReflectServer, за по-лесно активиране на SSL удостоверяване за всички входящи TCP връзки. Тези методи са налице, ако е дефинирано MUSCLE_ENABLE_SSL.
  • Добавени са методите SetSSLPublicKeyCertificate () и GetSSLPublicKeyCertificate () към класа ReflectServer, за по-лесно активиране на SSL удостоверяване при изходящи TCP връзки. Тези методи са налице, ако е дефинирано MUSCLE_ENABLE_SSL.
  • Добавени са методите SetSSLPrivateKey () и SetSSLPublicKeyCertificate () към класа MessageTransceiverThread, за по-лесно активиране на SSL функционалност при използване на резбовани I / O.
  • Добавена е папка ssl_data с известна информация за генерирането на OpenSSL публични / частни манипулатори и примерно keypair за използване при тестване на OpenSSL.
  • Когато MUSCLE_ENABLE_SSL е дефиниран, мускулите вече приемат допълнителен аргумент "privatekey = filename". Когато е зададено, SSL режимът ще бъде активиран и мускуленият ще приема само входящи TCP връзки, които представят публични ключове, които съответстват на този частен ключ / сертификат.
  • Когато е дефинирана MUSCLE_ENABLE_SSL, portablereflectclient и qt_example вече ще приемат опция "publickey = filename". Когато е посочено, режимът SSL ще бъде активиран и тези клиенти ще се свързват с мускули с помощта на OpenSSL и ще представят този файл като свои идентификационни данни.
  • Добавена е "Анимирай" отметка до демонстрацията qt_example. Проверката му води до автоматично преместване на индикатора около прозореца. Това е забавно и полезно, ако искате да тествате сценарий, при който няколко клиенти генерират трафик едновременно.
  • Направи qt_example demo prettier.
  • Преименували макросите C ++ 11-helper в Hashtable.h и Queue.h, за да не се сблъскат с макроси на други пакети. * Фиксирани някои малки грешки в клас SSLSocketDataIO. o Преименувал SSLSocketDataIO :: SetKey () на SetPrivateKey (). o Преименувано SSLSocketDataIO :: SetCertificate () на SetPublicKeyCertificate (). o AbstractMessageIOGateway :: SetDataIO () сега е виртуален метод.

Какво е новото във версия 5.92:

  • Подобрена поддръжка за семантика на C ++ 11 в класовете за опашки и класове (активирана само когато е дефинирана -DMUSCLE_USE_CPLUSPLUS11)
  • Добавени са някои уреди за класа на String, за да мога да видя колко пъти обектът String се копира, премества и т.н. (активиран е само когато е дефинирано -DMUSCLE_COUNT_STRING_COPY_OPERATIONS)
  • Добавена е функция PrintAndClearStringCopyCounts (), която ще отпечата данните за операциите на String, събрани по-горе.
  • Добавени са някои SFINAE магии за muscleSwap (), така че да се разменят, като се извика SwapContents (), когато е възможно, а не чрез копиране на временни обекти.
  • Добавен е конструктор на списък с инициализатори и претоварване на AddTailMulti () в класа Queue (налице е само когато -DMUSCLE_USE_CPLUSPLUS11 е определено, разбира се)
  • Преименувате претоварванията на Queue и маси от Queue :: AddTail () към AddTailMulti (), за да избегнете конфликти с новата поддръжка на шаблони за C ++ 11.
  • Преименувате претоварванията на Queue и маси от Queue :: AddHead () към AddHeadMulti (), за да избегнете конфликти с новата поддръжка на шаблони за C ++ 11.
  • Замени макроса MCRASH_IMPL с обаждане за твърдение (невярно).
  • Още малко съвместимост с Android съвместимост.
  • Много от програмите в папката с тестове не се компилират под C ++ 11. Фиксирана.
  • Решиха няколко потенциални бъгове, които бяха открити от статичния инструмент за анализ на clang.

Какво е новото във версия 5.91:

  • Добавя се удобен метод EnsureCanPut () към класа Hashtable.
  • Добавен удобен метод EnsureCanAdd () към класа на опашката.
  • Променен е DoMutexAtomicIncrement (), който е функция за вграждане, за да го направи по-ефективна.
  • Промениха QMessageTransceiverThread и QAcceptSocketsThread, за да се обадите на QCoreApplication :: postEvent (), а не на QApplication :: postEvent (), за да разрешите приложения, които не са GUI Qt.
  • Актуализира документа на ръководството за начинаещи, за да отразява подобрената поддръжка на UPS на MUSCLE.
  • Съчетано с някои промени в съвместимостта с Android, предоставени от Jean-François Mullet.
  • Използването на флага за компилиране MUSCLE_USE_MUTEXES_FOR_ATOMIC_OPERATIONS би предизвикало MUSCLE да се срине при стартиране поради проблем с поръчката. Това бе поправено сега.
  • Флагът за компилиране MUSCLE_USE_MUTEXES_FOR_ATOMIC_OPERATIONS е използван преди, само ако не е налице друго изпълнение на AtomicCounter. Сега флагът има по-висок приоритет, така че настройването на флага означава, че ще бъдат използвани Mutexes, дори ако има друг (по-ефективен) механизъм.

Какво е новото във версия 5.90:

  • Добавен е метод GetPacketMaximumSize () към класа DataIO, който позволява на кода на шлюза по-интелигентно да обработва пакетизирана комуникация в стил UDP.
  • MessageIOGateway сега работи полезно във връзка с UDPSocketDataIO.
  • Добавени са CreateObjectFromArchiveMessage () шаблонни функции към Message.h, за да служи като обратна страна за възстановяване от GetArchiveMessageFromPool () и др.
  • AtomicCounter :: AtomicIncrement () връща булев (вярно, ако новата стойност на брояча е равна на една).
  • Промениха класа HashtableIterator, така че повторенията Hashtable само за четене вече са безопасни за конфигурацията, дори ако флаговеят HTIT_FLAG_NOREGISTER не е посочен.
  • Добавена е класа muscle_thread_id на SetupSystem.h, за да представлява правилно идентификационния номер на нишка по начин, неутрален на изпълнението.
  • Добавена е "застой" в папката с тестове. Тази програма преднамерено рискува да създаде застой, като начин за упражняване / демонстриране на теста на безизходицата.
  • Добавена е поддръжка на знак -DMUSCLE_AVOID_THREAD_SAFE_HASHTABLE_ITERATORS на командния ред, за тези, които предпочитат да избегнат режийните разходи за автоматична кола и обещават да предоставят HTIT_FLAG_NOREGISTER аргументи ръчно, когато е необходимо.
  • Добавена е допълнителна кеш за търсене LRU към функцията GetHostByName (), така че да може да се върне по-бързо, когато същите имена на хостове се решават отново и отново.
  • Добавена е функция SetHostNameCacheSettings (), която активира и коригира кеша за търсене на LRU в GetHostByName ().
  • Добавена е поддръжка за "dnscache" и "dnscachesize" аргументите на командния ред в HandleStandardDaemonArgs (), за да позволят поведението на командния ред на поведението на кеша за търсене на LRU.
  • Модифицира класа Hashtable, така че стойностите _iterHead, _iterTail и _freeHead сега са uint32s, а не указатели, за да се намали използването на паметта.
  • Премахнаха метода ThreadLocalStorage :: SetFreeHeldObjectsOnExit () и добави булев аргумент към неговия конструктор, тъй като pthreads не ви позволяват да промените тази настройка след извикването на pthread_key_create ().
  • Преместихме GetCurrentThreadID () в класа muscle_thread_id като функция на статичен елемент и го сменихме, за да върнем muscle_thread_id обект, вместо да не се подписваме дълго.
  • Променено име на хост по подразбиране за сесии без известен IP адрес от & quot; до "_unknown_", тъй като ъгловите скоби в бившия низ имат специално значение от освобождаването от 5,84 и това би могло да възпрепятства неумишленото свързване на пътя на възела.
  • Методите CalculateChecksum () в Message.cpp са променени, за да бъдат по-стабилни при откриването на различия в транспонирането на данните.
  • Премахнато е поддръжката на MUSCLE_USE_QT_FOR_ATOMIC_OPERATIONS от AtomicCounter.h, тъй като QT класа QAtomicInt не поддържа функционалността, която изисква нова връщаща стойност на метода AtomicIncrement ().
  • Премахнати MessageIOGateway :: FlattenMessage () и MessageIOGateway :: UnflattenMessage (). Добавени на мястото им: MessageIOGateway :: FlattenHeaderAndMessage () и MessageIOGateway :: UnflattenHeaderAndMessage (). Тези нови методи се занимават едновременно с заглавните байтове и с тялото на съобщенията.
  • Добавя файла udpproxy.vcproj в папката за тестове, за да помогне за компилирането на udpproxy под Windows.
  • Съобщение: Flatten () вече се повтаря върху полетата в съобщението веднъж, вместо два пъти.
  • GetCurrentThreadID () вече е вградена функция, тъй като сега може да се нарича често от HashtableIterator.
  • Променен е кодът на deadlockfinder да се използват Queues вместо Hashtables, тъй като muscle_thread_id вече не може да бъде използван като тип клавиш Hashtable.
  • Фиксирана testudp.cpp, за да използва правилно MessageIOGateway за комуникацията си с UDP.
  • Оправихте ifdefs в FilePathInfo.cpp малко повече, така че statInfo.st_birthtimespec няма да бъде достъпен, когато използвате SDK на MacOS / X, които не го предоставят.
  • MessageDataIOGateway вече не се опитва да изтрие съобщение от zlib-дефлационен буфер за данни, което не може да се надуе отново.
  • Отстранена е грешка в SendDataUDP (), която може да доведе до грешно връщане на грешка при изпращане на SendDataUDP () при изпращане до адрес за множествено предаване при използване на режим без блокиране и изходния буфер е пълен.

Какво е новото във версия 5.85:

  • Добавени са LogTime (MUSCLE_LOG_DEBUG) повиквания към всички пътища за грешки в MessageIOGateway :: DoInputImplementation () и Message :: Unflatten (), така че е по-лесно да се определи кога TCP връзките се прекратяват поради данни корупция.
  • Добавена е функция PreviousOperationHadTransientFailure (), която връща true iff errno е EINTR или ENOBUFS.
  • Определянето на spamspersecond = -1 ще доведе до това hexterm да изпрати спам данни възможно най-бързо.
  • Приложението MUSCLE_USE_POLL на SocketMultiplexer.h доставя POLLERR на WSAPoll (), но WSAPoll () не поддържа POLLERR, така че WSAPoll () ще върне грешка, когато това се случи. Обработено около проблема, като филтрираме POLLERR при компилиране под Windows.
  • Коригира грешка, при която изпращането () връщането на ENOBUFS може да доведе до прекъсване на връзката на сокета, въпреки че ENOBUFS не е фатално състояние.
  • SocketMultiplexer.cpp няма да се компилира при дефиниране на MUSCLE_USE_POLL. Фиксирана.
  • Методът ZLibCodec :: Deflate () няма да компресира всички данни в много голям буфер (например над 42MB). Фиксирана.

Какво е новото във версия 5.84:

  • Синтаксисът на числовия диапазон на класа StringMatcher е разширен, така че вече можете да зададете няколко диапазона. Например " ще съответства на низовете "19", "20", "21", "25", "30", "31", [...] и "50"
  • Добавени са функциите за преобразуване GetCurrentTime64ForRunTime64 () и GetRunTime64ForCurrenTime64 () към TimeUtilityFunctions.h.
  • Добавен е полезен метод за GetDescendant () към класа DataNode.
  • Добавени са C ++ 11 преместващи конструктори и оператори за прихващане на задачите към класовете Hashtable, Queue, String, Message и ByteBuffer. За обратна съвместимост с по-стари компилатори този код ще бъде компилиран само ако -DMUSCLE_USE_CPLUSPLUS11 е зададен в компилационната линия.
  • Класът "SharedMemory" вече не се класифицира в клас, който не е споделена памет, ако е зададена -DMUSCLE_FAKE_SHARED_MEMORY.
  • Добавен е testfilepathinfo тест към тестовата папка.
  • Актуализира всички заглавки на бележките за авторски права, за да прочетете 2000-2013 Meyer Sound.
  • Добавени са интервали между макроси (напр. UINT32_FORMAT_SPEC) и низови константи (напр. "Hello"), за да се направят компилаторите на C ++ 11 щастливи.
  • ByteBuffer.cpp има грешка в синтаксиса, която би предотвратила компилирането на големите ендийски хостове. Фиксирана.
  • Само за MacOS / X: заместените отменени Carbon функционални повиквания с Mach еквиваленти, за да се избегнат предупреждения за отхвърляне под 10.8.x.
Какво е новото във версия 5.83:

  • Добавени удобни версии на InflateByteBuffer () и DeflateByteBuffer вземете ByteBufferRef като аргумент.
  • Премахнат някои остарели / неизползвани методи (EnsureBufferSize () и FreeLargeBuffer ()) от клас AbstractMessageIOGateway.
  • Фиксирани са някои грешки в коментарите в подпапката Delphi.
  • Класът Hashtable вече не генерира предупреждения, когато е компилиран под MSVC с дефиниран -DMUSCLE_AVOID_MINIMIZED_HASHTABLES.
  • Отстранена е грешка в IPAddressAndPort :: ToString (), която е причинила неопределен формат на IPv4 адресните низове, когато (preferIPv4Style) е настроено на фалшиви.

Подобен софтуер

Sesame
Sesame

20 Feb 15

PostGIS
PostGIS

19 Feb 15

Друг софтуер на разработчика Jeremy Friesner

AudioMove
AudioMove

2 Jun 15

Коментари към MUSCLE

Коментари не е намерена
добавите коментар
Включете на изображения!
Търсене по категория