MUSCLE

Programinė įranga Screenshot:
MUSCLE
Programinė detalės:
Versija: 6.82 Atnaujintas
Įkėlimo datą: 22 Jun 18
Kūrėjas: Jeremy Friesner
Licencija: Nemokamai
Populiarumas: 76

Rating: 5.0/5 (Total Votes: 1)

MUSCLE reiškia "Multi User Server Client Linkage Environment" ir tai yra atviro kodo, nemokama, patikima, keičiamo dydžio ir tarpplatformų pranešimų sistema, kurią sudaro serverio ir kliento komponentai. Tai padės jums parašyti visas paskirstytos programinės įrangos rūšis, iš daugelio žaidėjų žaidimų ir IRC pokalbių klientų, į SETI skaičiavimo programas.


Savybės iš pirmo žvilgsnio

Naudodamiesi "MUSCLE", vartotojai galės lengvai pritaikyti įtrauktą "raumeningą serverį", nustatydami savo seansų logiką arba pranešimų srauto protokolą. Programinė įranga padeda jums parašyti kliento kodą programavimo kalbomis C + +, C, C #, Java, Delphi arba Python.

Programa naudoja BMessage panašius raumenis :: Žinutės, palaiko suplaktų raumenų siuntimą :: Pranešimai tarp kompiuterių per TCP (perdavimo valdymo protokolo) srautus, išplečia "racionalų serverį" serverio kompiuteryje, leidžianti kurti kliento programas, kurios gali būti naudojamos bendrauti su serveriu.

Be to, tai apima vieno ir daugelio srieginių pranešimų API, kurie palaiko visas anksčiau paminėtas programavimo kalbas. & Ldquo; Raumeningas serveris & rdquo; galima lengvai pritaikyti, nustatant srautinio perdavimo protokolą arba seanso logiką.

"MUSCLE" pradžia

Po sėkmingo prisijungimo, kliento programos gali nustatyti, kas dar yra prisijungęs prie centrinio serverio, taip pat laikyti raumenis :: Žinutės RAM (sistemos atmintyje) ir siųsti raumenis :: Žinutės kitiems klientams, kurie yra prijungti į serverį. Atminkite, kad klientų programos gali užsiprenumeruoti konkrečius duomenis serveryje ir gauti momentinius pranešimus, kai duomenys keičiasi.


Palaiko platų pranešimų maršrutų spektrą

Programinė įranga buvo sukurta taip, kad būtų palaikoma daugybė pranešimų maršrutų, įskaitant unicast stiliaus, transliacijos stiliaus ir multicast stiliaus per intelektualų, hierarchinį modelio suderinimo maršruto mechanizmą.


Palaikomos operacinės sistemos ir prieinamumas

"MUSCLE" veikia bet kurioje "POSIX" suderinamoje operacinėje sistemoje. Jis platinamas kaip vienas universalus šaltinių archyvas, leidžiantis vartotojams optimizuoti savo GNU / Linux sistemos taikomąją programą. Šiuo metu palaikomos tiek 32 bitų, tiek 64-bitų aparatinės platformos.

Kas naujo šiame leidime:

  • testai / Makefile-mt nebenori bandyti sudaryti testreflectsession, išskyrus kai atliekama operacinėje sistemoje, kurią palaiko testreflectsession.
  • Padarėme keletą "MUSCLE pagal pavyzdį" redagavimo ir pertvarkymo. puslapiuose.
  • Pakeitė keletą "žymių" MkDocs su [URLs] (...)
  • Pašalinta privati ​​CensusObject paveldėtoja iš visų klasių, kurioms tai buvo - dabar jų vietoje yra CountedObject privatus kintamojo narys. Tai buvo padaryta tik todėl, kad visas privatus paveldėjimas užgožia "DOxygen" paveldėjimo diagramas.
  • Pridėjo DECLARE_COUNTED_OBJECT makrokomandą į CountedObject.h, kad bet kokią potencialią CountedObjects atminties gali būti pašalinta tais atvejais, kai objektų skaičiavimas nepageidautinas.
  • Pašalinta parama -DMUSCLE_AVOID_OBJECT_COUNTING ir pridėta makrokomanda -DMUSCLE_ENABLE_OBJECT_COUNTING savo vietoje. (Tai reiškia, kad dabar CountedObject klasė yra išjungta pagal numatytuosius nustatymus ir turi būti aiškiai įgalinta, norint ją naudoti).
  • Pridėta "MUSCLE pagal pavyzdį" dokumentacija, skirta "MiscUtilityFunctions". {cpp, h}
  • "Mėnulio" pavyzdyje MkDocs šaltinio į "[urls]" pakeista daugybė "žymių", kad būtų galima greitai peržiūrėti jų nurodytus metodus.
  • serveris / Makefile dabar nurodo libmuscle.a po pagrindinio () .o failo.
  • Ištaisyta kai kurie gcc įspėjimai bandymų aplanke (pagal "Mika" pasiūlymus)
  • UnparseFile () nepateikė tinkamų raktažodžių su užrašais. Fiksuotas.
  • Ištaisyta priklausomybė "MUSCLE pagal pavyzdį" pavyzdžiai "Makefile".

    • Pridėtas "ShrinkToFit ()" patogumo metodas į eilutę, "Hashtable", " ir styginių klases. Šis metodas susiaurina objektą taip, kad vidinis jo atminties kiekis atitiktų faktiškai saugomų duomenų dydį.
    • Hashtable :: EnsureSize () ir eilutė :: EnsureSize () dabar priims neprivalomą (allowShrink) argumentą, kad (jei nustatytas tiesa), objekto vidinis masyvas gali būti perskirstytas mažesnis, jei jis didesnis nei būtina.
    • "String" klasės buferinio-plėtinio elgsena yra šiek tiek efektyvesnė.
    • Pridėjo apsaugą nuo potencialios begalinės rekursijos, kuri gali atsirasti, kai prisijungiate prie "OUT OF MEMORY" & quot; klaida po atminties paskirstymo nesėkmės, jei LogCallback bandė priskirti atmintį.

    Kas naujo versijoje 6.01:

    • Styginių klasei pridedamas PrependWord () patogumo metodas.
    • Styginių klasei pridedami "WithReplacements ()" patogumo metodai.
    • Pridėjo "SetExplicitDelayMicros () metodą į" DetectNetworkConfigChangesSession "klasę.
    • Į "NetworkInterfaceInfo" klasę įtrauktas "IsCopperDetected () metodas, kad kodas galėtų pasakyti, ar Ethernet lizdas turi kištuką į jį.
    • Pridėjo & quot; tylusasvesti & quot; argumentas "hexterm".
    • "Virtualusis" NetworkInterfacesChanged () virtualus metodas "DetectNetworkConfigChangesSession" klasėje buvo pakeistas, kad būtų priimtas argumentas, kuris pasakoja, kokie tinklo sąsajos ypač pasikeitė. Ši funkcija šiuo metu yra įdiegta tik Linux, MacOS / X ir Windows. Kitoms operacinėms sistemoms argumentas visada bus tuščias sąrašas.
    • Ištaisyta "DetectNetworkConfigChangesSession" Linux įdiegimo klaida, kuri gali sukelti segmentavimo sutrikimą, jei recvmsg () grąžino klaidą (pvz., dėl gauto signalo).

    Kas naujo versijoje 6.00:

    • Perrašėme SSLSocketDataIO klasę, kad veiktų geriau ne blokuojančių įvesties / išvesties (kartu su nauja SSLSocketAdapterGateway klase).
    • Pridėta SSLSocketDataIO :: SetPrivateKey () ir SSLSocketDataIO :: SetCertificate () funkcijų, kurios argumentu naudoja ByteBuffer.
    • Pridėjo "SSLSocketAdapterGateway" klasę, kuri naudojama valdyti "OpenSSL" vidinį būseną, kai naudojate SSLSocketDataIO klasę savo vartuose.
    • Pridėjo SetSSLPrivateKey () ir GetSSLPrivateKey () metodus į "ReflectServer" klasę, kad būtų lengviau įjungti SSL autentifikavimą visose gaunamosiose TCP jungtyse. Šie metodai yra prieinami, jei yra MUSCLE_ENABLE_SSL.
    • Pridėjo SetSSLPublicKeyCertificate () ir GetSSLPublicKeyCertificate () metodus į "ReflectServer" klasę, kad būtų lengviau įjungti SSL autentifikavimą išeinantys TCP jungtys. Šie metodai yra prieinami, jei yra MUSCLE_ENABLE_SSL.
    • Pridėjo SetSSLPrivateKey () ir SetSSLPublicKeyCertificate () metodus į "MessageTransceiverThread" klasę, kad galėtumėte lengviau įjungti SSL funkcijas naudodami sriegiuoto I / O.
    • Pridėjo "ssl_data" aplanką, kuriame pateikiama tam tikra informacija apie "OpenSSL" viešojo / privataus "keypairs" kūrimą ir "OpenSSL" testavimui naudingą pavyzdį.
    • Kai yra apibrėžta MUSCLE_ENABLE_SSL, raumeningumas dabar priima neprivalomą "privatekey = filename" argumentą. Kai bus nurodyta, SSL režimas bus įjungtas, o raumenys priims tik gaunamus TCP jungtys, kuriuose pateikiami viešieji raktiniai žodžiai, atitinkantys šį privatųjį raktą ar sertifikatą.
    • Kai yra apibrėžta MUSCLE_ENABLE_SSL, portablereflectclient ir qt_example dabar priims neprivalomą "publickey = filename" argumentą. Kai bus nurodyta, SSL režimas bus įjungtas, o šie klientai prisijungs prie raumenų naudojant OpenSSL ir pateikia šį failą kaip savo įgaliojimus.
    • Pridėjo & quot; Animate & quot; qt_example demo žymės langelį. Patikrinus, langas automatiškai perkelia jo indikatorių. Tai įdomus ir naudingas, jei norite išbandyti scenarijų, kuriame vienu metu generuoja srautą kelis klientus.
    • Padarėme demonstraciją "qt_example" gražiau.
    • Pervardavo C + + 11 pagalbininko makrokomandas "Hashtable.h" ir "Queue.h", kad sumažėtų jų susidūrimas su kitų makrokomandų paketais. * Ištaisyta keletas neesminių klaidų SSLSocketDataIO klasėje. o Pervadinta SSLSocketDataIO :: SetKey () į SetPrivateKey (). o Pervadinta SSLSocketDataIO :: SetCertificate () į SetPublicKeyCertificate (). O AbstractMessageIOGateway :: SetDataIO () dabar yra virtualus metodas.

    Kas naujo 5.92 versijoje:

    • Geresnis palaikymas C + + 11 perkėlimo semantikai eilučių ir "Hashtable" klasėse (įjungta tik tada, kai yra apibrėžta -DMUSCLE_USE_CPLUSPLUS11)
    • Pridėjo tam tikrą įrangą į Styginių klasę, kad galėčiau pamatyti, kiek kartų Styginių objektas yra nukopijuojamas, perkeltas ir tt (įjungtas tik tada, kai nustatomas -DMUSCLE_COUNT_STRING_COPY_OPERATIONS).
    • Pridėta PrintAndClearStringCopyCounts () funkcija, kuri bus išspausdinta anksčiau surinktų styginių operacijų duomenų.
    • Pridėjus keletą SFINAE magijos, kad būtų pakeista raumenų () funkcija, ji pakeis, skambindami SwapContents (), kai tai įmanoma, o ne kopijuojant į laikiną objektą.
    • Pridėjo pradedančiųjų sąrašo konstruktorių ir "AddTailMulti ()" perkrovą į "Queue" klasę (galima tik tada, kai žinoma, -DMUSCLE_USE_CPLUSPLUS11)
    • Pervadinta eilutė ir masyvo eilutės perkrovos :: AddTail () į AddTailMulti (), kad būtų išvengta konfliktų su nauja parama analizės C + + 11.
    • Pervadinta eilutė ir masyvo eilutė :: AddHead () į AddHeadMulti (), kad būtų išvengta nesuderinamumo su nauju C + + 11 šablono parsuojančia parama.
    • pakeista makrokomandos MCRASH_IMPL su skambučiu patvirtinti (klaidinga).
    • Šiek tiek daugiau "Android" suderinamumo nustatymų.
    • Daugelis bandymų aplankų programų nebuvo kompiliuojamos pagal C + + 11. Fiksuotas.
    • Ištaisyta keletas galimų klaidų, kurias nustatė klano statinio analizės įrankis.

    Kas naujo 5.91 versijoje:

    • Pridėtas EnsureCanPut () patogumo metodas Hashtable klasei.
    • "Queue" klasei pridėtas "EnsureCanAdd ()" patogumo metodas.
    • Pakeistas "DoMutexAtomicIncrement" () funkcija yra tiesioginis, kad skambinti būtų efektyvesnis.
    • Pakeisti QMessageTransceiverThread ir QAcceptSocketsThread skambinti QCoreApplication :: postEvent (), o ne QApplication :: postEvent (), kad būtų galima naudoti ne GUI Qt programas.
    • Atnaujintas "Pradedančiųjų vadovo" dokumentas, kuris atspindi "MUSCLE" patobulintą UDP palaikymą.
    • Sujungta su kai kuriais "Android" suderinamumo pakeitimais, pateiktais "Jean-François Mullet".
    • Naudojant "MUSCLE_USE_MUTEXES_FOR_ATOMIC_OPERATIONS" kompiliavimo vėliavėlę, "MUSCLE" gali sugesti paleidžiant dėl ​​operacijų tvarkos problemos. Tai jau buvo ištaisyta.
    • Žymėjimo MUSCLE_USE_MUTEXES_FOR_ATOMIC_OPERATIONS kompiliavimas anksčiau buvo naudojamas tik tuo atveju, jei nebuvo kito "AtomicCounter" įdiegimo. Dabar vėliava yra aukštesnė, todėl vėliavėlės nustatymas reiškia, kad "Mutexes" bus naudojamos, net jei yra kitas (efektyvesnis) mechanizmas.

    Kas naujo 5.90 versijoje:

    • Pridėjo metodą GetPacketMaximumSize () prie "DataIO" klasės, kad šliuzo kodas būtų labiau suprantamai tvarkomas UDP stiliaus paketuoto ryšio.
    • MessageIOGateway dabar naudingas kartu su UDPSocketDataIO.
    • Pridėjo CreateObjectFromArchiveMessage () šablonines funkcijas į Message.h, kad būtų naudojamas kaip GetArchiveMessageFromPool () atkūrimo pusės ir tt
    • AtomicCounter :: AtomicIncrement () dabar grąžina boolean (tiesa, jei nauja skaitiklio vertė yra lygi vienai).
    • Modifikuota "HashtableIterator" klasė, todėl tik skaitymo versijos "Hashtable" iteracijos dabar yra saugios, net jei nenurodyta vėliava HTIT_FLAG_NOREGISTER.
    • Pridėjo klasę muscle_thread_id į "SetupSystem.h", kad būtų tinkamai pristatytas sriegio ID įgyvendinimu neutralus būdas.
    • Pridėjo "aklavietę" & quot; programa į bandymų aplanką. Ši programa sąmoningai gali sukelti aklavietę, kaip būdą atlikti / parodyti "deadlockfinder" testą.
    • Pridėjo palaikymo komandų eilutės vėliavėlę -DMUSCLE_AVOID_THREAD_SAFE_HASHTABLE_ITERATORS tiems, kurie norėtų išvengti automatinių šynų saugos pridėtinių išlaidų ir, jei reikia, pateiktų HTIT_FLAG_NOREGISTER argumentus ranka.
    • Į funkciją GetHostByName () funkcija įtraukta neprivaloma LRU paieškos tarnybos talpykla, taigi ji gali grįžti greičiau, kai vėl ir vėl atsiranda tos pačios prieglobos.
    • Pridėta SetHostNameCacheSettings () funkcija, kuri leidžia ir reguliuoja LRU paieškos cache "GetHostByName ()".
    • Pridėjo "dnscache" & quot; ir "dnscachesize" Komandų eilutės argumentai, esantys HandleStandardDaemonArgs (), leidžia leisti komandų eilutės aprašymą LRU paieškos cache'o elgsenai.
    • Pakeitė "Hashtable" klasę, kad "_iterHead", _iterTail ir _freeHead narių reikšmės dabar būtų uint32s, o ne rodyklės, siekiant sumažinti atminties kiekį.
    • Pašalino metodą ThreadLocalStorage :: SetFreeHeldObjectsOnExit () ir jo konstruktoriui pridėjo loginį argumentą, nes pthreads neleidžia jums pakeisti šio nustatymo po pthread_key_create ().
    • Perkelta GetCurrentThreadID () į klasę muscle_thread_id kaip statinio nario funkciją ir pakeitė ją, kad sugrąžintų objektą muscle_thread_id, o ne pasirašė ilgą.
    • pakeitė numatytuosius seansų pavadinimus, neturinčius žinomo IP adreso iš & quot; & quot; į "_unknown_", nes buvusios eilutės kampo skliausteliai turi ypatingą reikšmę nuo 5.84 spaudos, o tai gali trukdyti nukreipti mazgų kelią nenumatytais būdais.
    • "Message.cpp" apskaičiavimo metodai CalculateChecksum () buvo pakeistos taip, kad būtų lengviau nustatyti duomenų perkėlimo skirtumus.
    • Pašalinta "MUSCLE_USE_QT_FOR_ATOMIC_OPERATIONS" parama iš "AtomicCounter.h", nes Qt "QAtomicInt" klasė nepalaiko funkcijų, kurias reikia taikyti naujos AtomicIncrement () metodui.
    • Pašalinta MessageIOGateway :: FlattenMessage () ir MessageIOGateway :: UnflattenMessage (). Pridedama jų vieta: MessageIOGateway :: FlattenHeaderAndMessage () ir MessageIOGateway :: UnflattenHeaderAndMessage (). Šie nauji metodai tuo pačiu metu vykdo tiek antraščių baitų, tiek Pranešimų kūno.
    • Pridėjo failą udpproxy.vcproj į bandymų aplanką, kad padėtų sudaryti udpproxy sistemoje "Windows".
    • Žinutė: "Flatten" () dabar kartoja vieną kartą, o ne du kartus, laukuose, esančiose žinutėje.
    • GetCurrentThreadID () dabar yra linijinė funkcija, nes dabar ją dabar gali skambinti "HashtableIterator".
    • pakeitė "deadlockfinder" kodą, norėdami naudoti eilučių, o ne "Hashtables", nes muscle_thread_id nebebus naudojamas kaip "Hashtable" raktų tipas.
    • Ištaisyta testudp.cpp, norint tinkamai naudoti "MessageIogateway" savo UDP ryšiui.
    • "Ifdefs" išplėstas FilePathInfo.cpp šiek tiek daugiau, kad nebus pasiekiamas statInfo.st_birthtimespec, kai nenaudosite "MacOS / X SDK".
    • MessageDataIOGateway nebando iš naujo išvalyti pranešimo iš zlib-sugadinto duomenų buferio, kurį jis negalėjo pakartotinai išpūsti.
    • Ištaisyta klaida SendDataUDP (), kuri gali sukelti SendDataUDP () klaidingai grąžinti klaidą siunčiant daugiaadresio adresą, naudojant neblokuojantį režimą, o išvesties buferis buvo pilnas.

    Kas naujo 5.85 versijoje:

    • Pridedami "LogTime" (MUSCLE_LOG_DEBUG) skambučiai į visus klaidos kelius "MessageIOGateway :: DoInputImplementation () ir" Message :: Unflatten (), kad būtų lengviau nustatyti, kada TCP jungtys nutraukiamos dėl duomenų korupcija.
    • Pridėta funkcija PreviousOperationHadTransientFailure (), kuri grąžina tikrąją iff errno yra EINTR arba ENOBUFS.
    • Spamspersecond = -1 nurodymas dabar paskatins hexterm siųsti spam duomenis kuo greičiau.
    • SocketMultiplexer.h "MUSCLE_USE_POLL" įgyvendinimas tiekia POLLERR į WSAPoll (), bet WSAPoll () nepalaiko POLLERR, todėl WSAPoll () grąžins klaidą, kai tai įvyks. Apdorojus problemą, filtruojant POLLERR kompiliavimo metu naudojant "Windows".
    • Ištaisyta klaida, kai siunčiant () grąžintą ENOBUFS gali būti nutrauktas lizdo ryšys, nors ENOBUFS nėra mirtinas būsena.
    • SocketMultiplexer.cpp nebūtų sudarytas, kai buvo apibrėžta MUSCLE_USE_POLL. Fiksuotas.
    • ZLibCodec :: Deflate () metodas sugebėtų suspausti visus duomenis labai dideliame buferyje (pvz., virš 42MB). Fiksuotas.

    Kas naujo versijoje 5.84:

    • "StringMatcher" klasės skaitmeninė diapazono sintaksė buvo išplėsta, kad dabar galite nurodyti keletą diapazonų. Pvz., "& Quot; būtų suderinti strings "19", "20", "21", "25", "30", "31", [...] ir "50".
    • Pridėjo GetCurrentTime64ForRunTime64 () ir GetRunTime64ForCurrenTime64 () konvertavimo funkcijas į TimeUtilityFunctions.h.
    • Pridėjo metodą GetDescendant () naudodami "DataNode" klasę.
    • Pridėta C ++ 11 perkėlimo konstruktorių ir perkėlimo paskirties operatorių į "Hashtable", "Queue", "String", "Message" ir "ByteBuffer" klases. Jei norite susigrąžinti ankstesnį suderinamumą su senesniais kompiliatoriais, šis kodas bus renkamas tik jei kompiliavimo eilutėje nurodytas -DMUSCLE_USE_CPLUSPLUS11.
    • "SharedMemory" klasė dabar bus nerf save į nepaskirstytos atminties klasę, jei nurodytas -DMUSCLE_FAKE_SHARED_MEMORY.
    • Bandymų aplanke pridėtas testfilepathinfo testas.
    • Atnaujinta visos autorių teisių antraštinės dalys, skaitytos 2000-2009 m. "Meyer Sound".
    • Suderintas tarpas tarp makrokomandų žetonų (pvz., UINT32_FORMAT_SPEC) ir eilučių konstantų (pvz., "Hello"), kad C ++ 11 kompiliatoriai būtų laimingi.
    • "ByteBuffer.cpp" turėjo sintaksės klaidą, dėl kurios ji negalėtų kaupti "big-endian" kompiuteriuose. Fiksuotas.
    • Tik "MacOS / X": pakeista nenaudojamų anglies funkcijų skambučiai su "Mach" ekvivalentais, siekiant išvengti įspėjimų apie neveikimą, esant mažesnei nei 10.8.x.

      • Pridėta patogių versijų InflateByteBuffer () ir DeflateByteBuffer (), kurios kaip argumentą laikykit "ByteBufferRef".
      • Iš AbstractMessageIOGateway klasės pašalinti kai kuriuos pasenusius / nepanaudotus metodus (EnsureBufferSize () ir FreeLargeBuffer ()).
      • Subfolder delphi pašalinta keletas klaidų.
      • "Hashtable" klasė nebevartoja įspėjimų, kai jie sukuriami naudojant MSVC su apibrėžta -DMUSCLE_AVOID_MINIMIZED_HASHTABLES.
      • Ištaisyta IPAddressAndPort :: ToString () klaida, dėl kurios IPv4 adreso eilutės buvo dvigubai suformatuoti, kai (preferredIPv4Style) buvo nustatyta klaidinga.

Panaši programinė įranga

CUBRID-Python
CUBRID-Python

15 Apr 15

progress_sa
progress_sa

20 Feb 15

Berkeley DB
Berkeley DB

27 Apr 17

Kita programinė įranga kūrėjas Jeremy Friesner

AudioMove
AudioMove

2 Jun 15

Komentarai MUSCLE

Komentarai nerastas
Pridėti komentarą
Pasukite ant paveikslėlio!