MUSCLE

Screenshot Software:
MUSCLE
Detalii soft:
Versiune: 6.82 Actualizat
Incarca data: 22 Jun 18
Producător: Jeremy Friesner
Licenţă: Gratuit
Popularitate: 26

Rating: 5.0/5 (Total Votes: 1)

MUSCLE reprezintă mediul de conectare pentru clienți multi-client și este un sistem de mesagerie cu sursă deschisă, gratuit, robust, scalabil și inter-platformă, care cuprinde componente server și client. Vă va ajuta să scrieți tot felul de programe distribuite, de la jocuri multiplayer și clienți IRC chat, la aplicații de calcul SETI.


Caracteristici dintr-o privire

Cu MUSCLE, utilizatorii vor putea personaliza cu ușurință serverul "muscled" inclus, definindu-și propria logică a sesiunilor sau protocolul de transmitere a mesajelor. Software-ul vă ajută să vă scrieți codul clientului în oricare dintre limbile de programare C ++, C, C #, Java, Delphi sau Python.

Programul utilizează mușchi asemănător BMessage :: Mesaje, suportă trimiterea de mușchi aplatizat :: Mesajele între calculatoare prin fluxurile TCP (Transmission Control Protocol), desfasoara un "server muscular" & rdquo; pe o mașină de server, permițându-vă să scrieți programe client care pot fi utilizate pentru a comunica cu serverul.

În plus, include API-uri de mesagerie single-și multi-threaded care suportă toate limbile de programare menționate mai sus. Serverul "musculare" & rdquo; poate fi personalizat cu ușurință prin definirea unui protocol de transmitere a mesajelor sau a unei logici de sesiune.

Începeți cu MUSCLE

După o autentificare reușită, programele client pot determina cine altcineva este conectat la serverul central, precum și pentru a stoca mesajele musculare :: Messages în memoria sistemului (RAM) și trimite mușal :: Mesaje altor clienți conectați la server. Rețineți că programele client se pot abona la date specifice de pe server și pot primi notificări instantanee atunci când datele se modifică.


Sprijină o gamă largă de rutine de mesaje

Software-ul a fost conceput pentru a suporta o gamă largă de rutine de mesaje, inclusiv stil unicast, în stil de difuzare și în stil multicast, printr-un mecanism de rutare inteligent, ierarhic de potrivire a tipului.


OS suportate și disponibilitate

MUSCLE rulează pe orice sistem de operare compatibil POSIX. Acesta este distribuit ca o singură arhivă sursă universală, care permite utilizatorilor să optimizeze aplicația pentru sistemul GNU / Linux. Ambele platforme hardware pe 32 de biți și 64 de biți sunt acceptate în acest moment.

Ce este nou în această versiune:

  • teste / Makefile-mt nu mai încearcă să compileze sesiunea de testreflecte, cu excepția cazului în care se execută într-un sistem de operare care susține testreflectsession.
  • S-au efectuat unele modificări minore și rearanjarea exemplului "MUSCLE by Example" pagini.
  • Înlocuit un număr de "etichete" în MkDocs cu [URL] (...)
  • A fost eliminată moștenirea privată a CountedObject din toate clasele care au avut-o - acum acestea includ o variabilă de membri private CountedObject. Acest lucru a fost făcut doar pentru că toată moștenirea privată era încurcată în graficele de moștenire DOxygen.
  • A fost adăugată o macrocomandă DECLARE_COUNTED_OBJECT la CountedObject.h astfel încât orice potențială cheltuială de memorie a CountedObjects să poată fi eliminată în cazurile în care nu este dorită numărarea obiectelor.
  • A fost eliminat suportul pentru -DMUSCLE_AVOID_OBJECT_COUNTING și a fost adăugată o macrocomandă -DMUSCLE_ENABLE_OBJECT_COUNTING în locul acestuia. (Adică clasa CountedObject este acum dezactivată în mod prestabilit și trebuie activată în mod explicit pentru ao folosi)
  • A fost adăugat "MUSCLE by Example" documentația pentru MiscUtilityFunctions. {cpp, h}
  • S-a modificat un număr de etichete în sursa MUSCLE-după-exemplu MkDocs în [urls], astfel încât metodele pe care le menționează să poată fi revizuite rapid.
  • serverul / Makefile specifică acum libmuscle.a după fișierul principal () .o.
  • S-au reprodus câteva avertismente de tip gcc în dosarul testelor (după sugestiile lui Mika)
  • UnparseFile () nu citează cuvintele cheie cu spații adecvate. Fix.
  • S-au fixat dependențele din secțiunea "MUSCLE by Example" exemple 'Makefiles.

Ce este nou în versiune:

și clasele String. Această metodă micșorează obiectul astfel încât cantitatea de memorie pe care a alocat-o să se potrivească la dimensiunea datelor pe care le deține.

  • Hashtable :: EnsureSize () și Queue :: EnsureSize () iau acum un argument optional (allowShrink), care (dacă este setat la true) permite ca matricea alocată intern a obiectului să fie realocată mai mică dacă este mai mare decât este necesar.
  • Ameliorat comportamentul de întindere a tamponului din clasa String pentru a fi puțin mai eficient.
  • S-a adăugat o protecție împotriva unei potențiale recurențe infinite care ar putea apărea în timpul înregistrării unui mesaj "OUT OF MEMORY" eroare după o eșec alocării memoriei, dacă un LogCallback a încercat să aloce memoria.
  • Ce este nou în versiunea 6.01:

    • A fost adăugată o metodă convențională PrependWord () la clasa String.
    • Adăugat cu metode de înlocuire () pentru clasa String.
    • A fost adăugată o metodă SetExplicitDelayMicros () la clasa DetectNetworkConfigChangesSession.
    • A fost adăugată o metodă IsCopperDetected () la clasa NetworkInterfaceInfo, astfel încât codul să poată indica dacă o mufă Ethernet are sau nu un cablu conectat la ea.
    • A fost adăugată o expresie "quietsend" argument la hexterm.
    • Metoda virtuală NetworkInterfacesChanged () din clasa DetectNetworkConfigChangesSession a fost modificată pentru a lua un argument care apelează care interfețe de rețea, în special, s-au schimbat. Această funcționalitate este în prezent implementată numai în Linux, MacOS / X și Windows. Pentru alte sisteme de operare, argumentul va fi întotdeauna o listă goală.
    • A fost rezolvată o eroare în implementarea Linux a DetectNetworkConfigChangesSession care ar putea provoca o eroare de segmentare dacă recvmsg () a returnat o eroare (de exemplu, din cauza unui semnal primit).

    Ce este nou în versiunea 6.00:

    • Redenumiți clasa SSLSocketDataIO pentru a funcționa mai bine cu I / O fără blocare (împreună cu noua clasă SSLSocketAdapterGateway).
    • S-au adăugat implementări ale SSLSocketDataIO :: SetPrivateKey () și SSLSocketDataIO :: SetCertificate () care iau un ByteBuffer ca argument.
    • A fost adăugată o clasă SSLSocketAdapterGateway care este utilizată pentru a gestiona mașina de stare internă a OpenSSL atunci când se utilizează o clasă SSLSocketDataIO cu gateway-ul dvs.
    • S-au adăugat metode SetSSLPrivateKey () și GetSSLPrivateKey () la clasa ReflectServer, pentru a permite mai ușor autentificarea SSL pe toate conexiunile TCP primite. Aceste metode sunt disponibile dacă MUSCLE_ENABLE_SSL este definită.
    • Au fost adăugate metodele SetSSLPublicKeyCertificate () și GetSSLPublicKeyCertificate () în clasa ReflectServer, pentru a permite mai ușor autentificarea SSL pe conexiunile TCP ieșite. Aceste metode sunt disponibile dacă MUSCLE_ENABLE_SSL este definită.
    • S-au adăugat metode SetSSLPrivateKey () și SetSSLPublicKeyCertificate () la clasa MessageTransceiverThread pentru activarea mai ușoară a funcționalității SSL atunci când se utilizează I / O cu filet.
    • A fost adăugat un dosar ssl_data cu câteva informații despre generarea perechilor de chei publice / private OpenSSL și un exemplu de cheie pentru utilizarea în testarea OpenSSL.
    • Atunci când este definită MUSCLE_ENABLE_SSL, musculosul acceptă acum un argument "privatekey = filename" opțional. Când este specificat, modul SSL va fi activat, iar mușchiul va accepta numai conexiunile TCP primite care prezintă cheile publice care se potrivesc cu această cheie privată / certificat.
    • Când MUSCLE_ENABLE_SSL este definit, portablereflectclient și qt_example va accepta acum un '= nume de fișier publicKey' argument opțional. Când este specificat, modul SSL va fi activat și acești clienți se vor conecta la musculare folosind OpenSSL și vor prezenta acest fișier ca acreditări.
    • A fost adăugat un "animat" la demonstrația qt_example. Verificarea faptului ca fereastra va muta automat indicatorul. Acest lucru este distractiv și este de asemenea util dacă doriți să testați un scenariu în care mai mulți clienți generează trafic simultan.
    • S-a făcut demonstrația qt_example mai frumoasă.
    • Redenumiți macrocomenzile C ++ 11 helper în Hashtable.h și Queue.h pentru a le face mai puțin probabil să se ciocnească cu macrocomenzile altor pachete. * Au fost rezolvate câteva erori minore în clasa SSLSocketDataIO. o S-a redenumit SSLSocketDataIO :: SetKey () la SetPrivateKey (). o Renamelați SSLSocketDataIO :: SetCertificate () la SetPublicKeyCertificate (). o AbstractMessageIOGateway :: SetDataIO () este acum o metodă virtuală.

    Ce este nou în versiunea 5.92:

    • Sprijin imbunatatit pentru semantica de mutari C ++ 11 in clasele Queue si Hashtable (activat numai cand definiti -DMUSCLE_USE_CPLUSPLUS11)
    • S-au adăugat niște instrumente pentru clasa String, astfel încât să pot urmări de câte ori un obiect String este copiat, mutat, etc (activat numai când este definit -DMUSCLE_COUNT_STRING_COPY_OPERATIONS)
    • A fost adăugată o funcție PrintAndClearStringCopyCounts () care va imprima datele despre operațiunea String colectate mai sus.
    • A fost adăugată o anumită magie SFINAE pentru a mutaSwap () astfel încât să se schimbe prin apelarea SwapContents () atunci când este posibil, mai degrabă decât prin copierea la un obiect temporar.
    • A adăugat un constructor de liste de inițializatori și o suprasarcină a AddTailMulti () la clasa Queue (disponibilă numai atunci când este definită -DMUSCLE_USE_CPLUSPLUS11, desigur)
    • Pentru a evita conflictele cu noul suport pentru parsarea șabloanelor C ++ 11, ați redenumit reîncărcările în Queue and array de la Queue :: AddTail () la AddTailMulti ().
    • Pentru a evita conflictele cu noul suport pentru parsarea șabloanelor C ++ 11, ați redenumit suprasarcinile de la Queue și array de la Queue :: AddHead () la AddHeadMulti ().
    • Înlocuit macro-ul MCRASH_IMPL cu un apel pentru a afirma (false).
    • Un pic mai mult compatibilitate cu compatibilitatea Android.
    • Multe dintre programele din dosarul de testare nu se compilau sub C ++ 11. Fix.
    • S-au rezolvat câteva erori potențiale care au fost detectate de instrumentul de analiză statică al clang.

    Ce este nou în versiunea 5.91:

    • A fost adăugată metoda de convenție EnsureCanPut () la clasa Hashtable.
    • A fost adăugată metoda de comoditate EnsureCanAdd () la clasa de coadă.
    • Modificat DoMutexAtomicIncrement () pentru a fi o funcție inline pentru a face apelul mai eficient.
    • Modificat QMessageTransceiverThread și QAcceptSocketsThread pentru a apela QCoreApplication :: postEvent () mai degrabă decât QApplication :: postEvent (), pentru a permite aplicații Qt non-GUI.
    • A fost actualizat documentul Ghidului pentru începători pentru a reflecta suportul UDP îmbunătățit al MUSCLE.
    • Au fost combinate în unele modificări de compatibilitate cu Android furnizate de Jean-François Mullet.
    • Folosirea pavilionului de compilare MUSCLE_USE_MUTEXES_FOR_ATOMIC_OPERATIONS ar determina MUSCLE să se prăbușească la pornire din cauza unei probleme de comandă a operațiilor. Acest lucru a fost rezolvat acum.
    • Steagul de compilare MUSCLE_USE_MUTEXES_FOR_ATOMIC_OPERATIONS a fost folosit anterior numai dacă nu a fost disponibilă nicio altă implementare a AtomicCounter. Acum, pavilionul are o prioritate mai mare, așadar fixarea steagului înseamnă că vor fi folosite Mutexurile, chiar dacă este disponibil un alt mecanism (mai eficient).

    Ce este nou în versiunea 5.90:

    • A fost adăugată o metodă GetPacketMaximumSize () la clasa DataIO pentru a permite codului gateway-ului să se ocupe mai inteligent de comunicarea pachetată în stil UDP.
    • MessageIOGateway funcționează acum util împreună cu UDPSocketDataIO.
    • S-au adăugat funcțiile șablonului CreateObjectFromArchiveMessage () către Message.h, pentru a servi ca o parte echivalentă cu partea de restaurare a GetArchiveMessageFromPool (), etc.
    • AtomicCounter :: AtomicIncrement () returnează acum un boolean (adevărat dacă noua valoare a contorului este egală cu una).
    • Modificat clasa HashtableIterator astfel încât iterațiile Hashtable numai pentru citire să fie acum protejate de fir, chiar dacă nu este specificat pavilionul HTIT_FLAG_NOREGISTER.
    • A fost adăugată o clasă muscle_thread_id la SetupSystem.h, pentru a reprezenta în mod corespunzător un ID de thread într-un mod neutru de implementare.
    • A fost adăugat un "blocaj" program în dosarul de teste. Acest program riscă în mod deliberat să creeze un impas, ca o modalitate de a exercita / demonstra testul de blocaj.
    • A fost adăugat suport pentru un semn de semnalizare pentru linia de comandă -DMUSCLE_AVOID_THREAD_SAFE_HASHTABLE_ITERATORS, pentru cei care ar prefera să evite sarcina de siguranță automată a firelor și promite să furnizeze hîrtiile HTIT_FLAG_NOREGISTER de mână, dacă este necesar.
    • A fost adăugată o memorie cache de căutare LRU opțională la funcția GetHostByName (), astfel încât aceasta să poată reveni mai repede când aceleași nume de gazde se rezolvă din nou și din nou.
    • A adăugat o funcție SetHostNameCacheSettings () care permite și ajustează cache-ul de căutare LRU în GetHostByName ().
    • Suportul adăugat pentru "dnscache" și "dnscachesize" linii de comandă în HandleStandardDaemonArgs (), pentru a permite caietul de sarcini al liniei de comandă a comportamentului cache-ului de căutare LRU.
    • Modificată clasa Hashtable astfel încât valorile _iterHead, _iterTail și _freeHead să fie acum uint32s, nu pointeri, pentru a reduce utilizarea memoriei.
    • A fost eliminată metoda ThreadLocalStorage :: SetFreeHeldObjectsOnExit () și a fost adăugat un argument boolean constructorului său, deoarece pthreads nu vă permit să schimbați acea setare după ce a fost apelat pthread_key_create ().
    • A mutat GetCurrentThreadID () în clasa muscle_thread_id ca o funcție statică a membrului și a schimbat-o pentru a întoarce un obiect muscle_thread_id mai degrabă decât pentru un nesemnat lung.
    • S-a modificat numele gazdă implicit pentru sesiuni fără o adresă IP cunoscută de la "& quot; la "_unknown_", deoarece consolele unghiulare din șirul anterior au o semnificație specială de la eliberarea 5.84 și ar putea interfera cu potrivirea căii nodului în moduri neintenționate.
    • Metodele CalculateChecksum () din Message.cpp au fost modificate pentru a fi mai robuste în detectarea diferențelor de transpunere a datelor.
    • A fost eliminat suportul MUSCLE_USE_QT_FOR_ATOMIC_OPERATIONS de la AtomicCounter.h, deoarece clasa QttomicInt a Qt nu suportă funcționalitatea necesară pentru valoarea returnată a metodei AtomicIncrement ().
    • Eliminat MessageIOGateway :: FlattenMessage () și MessageIOGateway :: UnflattenMessage (). Adăugat în locul lor: MessageIOGateway :: FlattenHeaderAndMessage () și MessageIOGateway :: UnflattenHeaderAndMessage (). Aceste metode noi privesc atât octeții antet, cât și corpul Mesajului în același timp.
    • A adăugat un fișier udpproxy.vcproj în dosarul de teste, pentru a ajuta la compilarea udpproxy în Windows.
    • Mesaj: Flatten () se repetă peste câmpurile mesajului o dată, în loc de două ori.
    • GetCurrentThreadID () este acum o funcție inline, deoarece poate fi apelată de obicei de HashtableIterator.
    • A fost modificat codul de blocare a blocurilor pentru a utiliza Queues în loc de Hashtables, deoarece muscle_thread_id nu mai poate fi folosit ca tip de cheie Hashtable.
    • Fixed testudp.cpp pentru a utiliza corect o MessageIOGateway pentru comunicarea sa UDP.
    • Configurați ifdefs în FilePathInfo.cpp puțin mai mult, astfel încât statInfo.st_birthtimespec nu va fi accesat atunci când utilizați SDK-uri MacOS / X care nu le furnizează.
    • MessageDataIOGateway nu mai încearcă să dezinfecteze un mesaj dintr-un tampon de date defalcat cu zlib pe care nu l-a putut re-umfla.
    • S-a rezolvat o eroare în SendDataUDP () care ar putea determina SendDataUDP () să returneze incorect o eroare atunci când a trimis la o adresă multicast folosind modul non-blocare și bufferul de ieșire a fost plin.

    Ce este nou în versiunea 5.85:

    • Au fost adăugate apelurile LogTime (MUSCLE_LOG_DEBUG) la toate căile de eroare din MessageIOGateway :: DoInputImplementation () și Message :: Unflatten (), astfel încât să fie mai ușor de determinat când conexiunile TCP sunt întrerupte din cauza datelor corupție.
    • A adăugat o funcție PreviousOperationHadTransientFailure (), care returnează true iff errno este EINTR sau ENOBUFS.
    • Specificarea spamspersecond = -1 va determina hextermul să trimită date despre spam cât mai repede posibil.
    • Implementarea MUSCLE_USE_POLL de către SocketMultiplexer.h furniza POLLERR la WSAPoll (), dar WSAPoll () nu suportă POLLERR, astfel încât WSAPoll () ar reveni la o eroare atunci când a avut loc acest lucru. A lucrat în jurul problemei prin filtrarea POLLERR la compilarea în Windows.
    • S-a rezolvat o eroare în cazul în care trimiterea () returnând ENOBUFS ar putea duce la terminarea conexiunii la soclu, chiar dacă ENOBUFS nu este o condiție fatală.
    • SocketMultiplexer.cpp nu s-ar compila când a fost definit MUSCLE_USE_POLL. Fix.
    • Metoda ZLibCodec :: Deflate () nu va comprima toate datele într-un tampon foarte mare (de ex. peste 42MB). Fix.

    Ce este nou în versiunea 5.84:

    • Sintaxa numerică a clasei StringMatcher a fost extinsă, astfel încât să puteți specifica mai multe intervale. De exemplu, " ar potrivi șirurilor "19", "20", "21", "25", "30", "31", [...] și "50"
    • Au fost adăugate funcțiile de conversie GetCurrentTime64ForRunTime64 () și GetRunTime64ForCurrenTime64 () la TimeUtilityFunctions.h.
    • A fost adăugată o metodă utilitară GetDescendant () la clasa DataNode.
    • S-au adăugat C ++ 11 constructori de mutare și operatori de mutare-asignare în clasele Hashtable, Queue, String, Message și ByteBuffer. Pentru compatibilitatea cu compilatoarele mai vechi, acest cod va fi compilat doar dacă -DMUSCLE_USE_CPLUSPLUS11 este specificat pe linia de compilare.
    • Clasa SharedMemory se va transforma acum într-o clasă de memorie partajată dacă este specificată funcția -DMUSCLE_FAKE_SHARED_MEMORY.
    • A fost adăugat un test testfilepathinfo în dosarul de teste.
    • S-a actualizat toate anteturile privind drepturile de autor pentru a citi Meyer Sound 2000-2013.
    • Spațiile adăugate între mărcile de macrocomenzi (de exemplu, UINT32_FORMAT_SPEC) și constantele de șir (de exemplu "Hello") pentru a face compilatoarele C ++ 11 fericite.
    • ByteBuffer.cpp a avut o eroare de sintaxă care ar împiedica compilarea pe gazde mari-endian. Fix.
    • Numai în MacOS / X: apelurile funcției Carbon înlocuite cu echivalente Mach, pentru a evita avertizările de depreciere sub 10.8.x.

    Ce este nou în versiunea 5.83:

    • ia un ByteBufferRef ca argument.
    • S-au eliminat unele metode învechite / neutilizate (EnsureBufferSize () și FreeLargeBuffer ()) din clasa AbstractMessageIOGateway.
    • Au fost rezolvate unele greșeli în comentariile din subfolderul Delphi.
    • Clasa Hashtable nu mai generează avertismente atunci când este compilată în MSVC cu -DMUSCLE_AVOID_MINIMIZED_HASHTABLES definită.
    • A fost rezolvată o eroare în IPAddressAndPort :: ToString () care a cauzat ambiguitatea formatelor de adresă IPv4 atunci când (preferatIPv4Style) a fost setată la false.

    Software similare

    MongoDB
    MongoDB

    17 Aug 18

    CUBRID-Python
    CUBRID-Python

    15 Apr 15

    Apache Cassandra
    Apache Cassandra

    19 Feb 15

    Alte software-uri de dezvoltator Jeremy Friesner

    AudioMove
    AudioMove

    2 Jun 15

    Comentarii la MUSCLE

    Comentariile nu a fost găsit
    Adauga comentarii
    Porniţi pe imagini!