MUSCLE

軟件截圖:
MUSCLE
軟件詳細信息:
版本: 6.82 更新
上傳日期: 22 Jun 18
許可: 免費
人氣: 76

Rating: 5.0/5 (Total Votes: 1)

MUSCLE 代表多用戶服務器客戶端鏈接環境,它是一個開源,免費,強大,可擴展和跨平台的郵件系統,由服務器和客戶端組件組成。它將幫助您編寫各種分佈式軟件,從多人遊戲和IRC聊天客戶端到SETI計算應用程序。


功能一目了然

通過MUSCLE,用戶可以通過定義自己的會話邏輯或消息流協議輕鬆自定義包含的“肌肉服務器”。該軟件可幫助您使用C ++,C,C#,Java,Delphi或Python編程語言編寫客戶端代碼。

該程序使用類似BMessage的肌肉::消息,支持發送扁平肌肉::通過TCP(傳輸控制協議)流在計算機之間發送消息,部署“肌肉發達的服務器”&rd​​quo;在服務器計算機上,允許您編寫可用於與服務器通信的客戶端程序。

此外,它還包括支持所有上述編程語言的單線程和多線程消息傳遞API。 “肌肉發達的服務器”&ndquo;可以通過定義消息流協議或會話邏輯輕鬆定制。

MUSCLE入門

成功登錄後,客戶端程序可以確定還有誰登錄到中央服務器,以及將肌肉::消息存儲在RAM(系統內存)中並將肌肉::消息發送到連接的其他客戶端到服務器。請注意,客戶端程序可以訂閱服務器上的特定數據,並在數據更改時立即收到通知。


支持各種消息路由

該軟件旨在通過智能的分層模式匹配路由機制支持各種消息路由,包括單播風格,廣播風格和多播風格路由。


支持的操作系統和可用性

MUSCLE可在任何符合POSIX標準的操作系統上運行。它作為單個通用源存檔分發,允許用戶優化GNU / Linux系統的應用程序。目前支持32位和64位硬件平台。

此版本中的新功能

  • tests / Makefile-mt不再嘗試編譯testreflectsession,除非在testreflectsession支持的操作系統上執行。
  • 做了一些小的編輯和重新安排“按例子的肌肉”。頁。
  • 用[URL](...)替換MkDocs中的多個`tags`
  • 從具有它的所有類中刪除了CountedObject的私有繼承 - 現在它們包含一個CountedObject私有成員變量。這樣做只是因為所有私有繼承都混淆了DOxygen繼承圖。
  • 在CountedObject.h中添加了一個DECLARE_COUNTED_OBJECT宏,以便在不需要對象計數的情況下,可以消除CountedObjects的任何潛在內存開銷。
  • 刪除了對-DMUSCLE_AVOID_OBJECT_COUNTING的支持,並在其位置添加了-DMUSCLE_ENABLE_OBJECT_COUNTING宏。 (也就是說,現在已禁用CountedObject類 - 默認情況下必須顯式啟用它才能使用它)。
  • 添加“按實例分類的肌肉” MiscUtilityFunctions的文檔。{cpp,h}
  • 將MUSCLE-by-Example MkDocs源中的多個`tags`更改為[urls],以便快速查看他們提到的方法。
  • server / Makefile現在指定main().o文件後面的libmuscle.a。
  • 修復了測試文件夾中的一些gcc警告(根據Mika的建議)
  • UnparseFile()沒有正確引用帶空格的關鍵字。固定的。
  • 修復了“MUSCLE by Example”中的依賴關係。示例'Makefiles。

版本中的新內容

  • 為Queue,Hashtable添加了一個ShrinkToFit()方便方法,和String類。此方法縮小對象,以便內部分配的內存量與實際保存的數據大小相匹配。
  • Hashtable :: EnsureSize()和Queue :: EnsureSize()現在採用可選(allowShrink)參數,如果設置為true,則允許對象的內部分配數組在大於必要時重新分配。
  • 調整String類的緩衝區擴展行為以提高效率。
  • 添加了防止在記錄“OUT OF MEMORY”時可能發生的潛在無限遞歸的警告。內存分配失敗後出現錯誤,如果LogCallback嘗試分配內存。

版本6.01中的新功能

  • 為String類添加了一個PrependWord()方便方法。
  • 為String類添加了WithReplacements()便捷方法。
  • 為DetectNetworkConfigChangesSession類添加了SetExplicitDelayMicros()方法。
  • 在NetworkInterfaceInfo類中添加了一個IsCopperDetected()方法,以便代碼可以判斷以太網插孔是否插有電纜。
  • 添加了“quietsend”對hexterm的爭論。
  • DetectNetworkConfigChangesSession類中的NetworkInterfacesChanged()虛方法已更改為接受一個參數,該參數調出特定的網絡接口已更改。此功能目前僅在Linux,MacOS / X和Windows下實現。對於其他操作系統,參數將始終為空列表。
  • 修復了DetectNetworkConfigChangesSession的Linux實現中的一個錯誤,如果recvmsg()返回錯誤(例如由於收到信號),可能會導致分段錯誤。

版本6.00中的新功能

  • 重寫了SSLSocketDataIO類,以便更好地使用非阻塞I / O(與新的SSLSocketAdapterGateway類結合使用)。
  • 添加了以ByteBuffer作為參數的SSLSocketDataIO :: SetPrivateKey()和SSLSocketDataIO :: SetCertificate()的實現。
  • 添加了一個SSLSocketAdapterGateway類,用於在網關中使用SSLSocketDataIO類時管理OpenSSL的內部狀態機。
  • 為ReflectServer類添加了SetSSLPrivateKey()和GetSSLPrivateKey()方法,以便在所有傳入的TCP連接上更輕鬆地啟用SSL身份驗證。如果定義了MUSCLE_ENABLE_SSL,則可以使用這些方法。
  • 為ReflectServer類添加了SetSSLPublicKeyCertificate()和GetSSLPublicKeyCertificate()方法,以便更輕鬆地在傳出TCP連接上啟用SSL身份驗證。如果定義了MUSCLE_ENABLE_SSL,則可以使用這些方法。
  • 將SetSSLPrivateKey()和SetSSLPublicKeyCertificate()方法添加到MessageTransceiverThread類,以便在使用線程I / O時更輕鬆地啟用SSL功能。
  • 添加了一個ssl_data文件夾,其中包含有關生成OpenSSL公鑰/私鑰對的一些信息,以及用於測試OpenSSL的示例密鑰對。
  • 當定義了MUSCLE_ENABLE_SSL時,肌肉現在接受一個可選的'privatekey = filename'參數。指定後,將啟用SSL模式,肌肉模式將僅接受提供與此私鑰/證書匹配的公鑰的傳入TCP連接。
  • 當定義了MUSCLE_ENABLE_SSL時,portablereflectclient和qt_example現在將接受可選的'publickey = filename'參數。指定後,將啟用SSL模式,這些客戶端將使用OpenSSL連接到肌肉,並將此文件作為其憑據提供。
  • 添加了“Animate” qt_example演示的複選框。檢查它會導致窗口自動移動其指示器。如果您想測試多個客戶端同時生成流量的方案,這很有趣也很有用。
  • 讓qt_example演示更漂亮。
  • 在Hashtable.h和Queue.h中重命名了C ++ 11-helper宏,使它們不太可能與其他包的宏發生衝突。 *修復了SSLSocketDataIO類中的一些小錯誤。 o將SSLSocketDataIO :: SetKey()重命名為SetPrivateKey()。 o將SSLSocketDataIO :: SetCertificate()重命名為SetPublicKeyCertificate()。 o AbstractMessageIOGateway :: SetDataIO()現在是一個虛方法。
  • 版本5.92中的

什麼是新的

  • 改進了對Queue和Hashtable類中C ++ 11移動語義的支持(僅在定義了-DMUSCLE_USE_CPLUSPLUS11時啟用)
  • 在String類中添加了一些檢測,以便我可以查看String對像被複製,移動等的次數(僅在定義了-DMUSCLE_COUNT_STRING_COPY_OPERATIONS時啟用)
  • 添加了PrintAndClearStringCopyCounts()函數,該函數將打印出上面收集的字符串操作數據。
  • 為muscleSwap()添加了一些SFINAE魔法,以便在可能的情況下通過調用SwapContents()進行交換,而不是複製到臨時對象。
  • 添加了一個初始化列表構造函數和AddTailMulti()重載到Queue類(當然,只有在定義了-DMUSCLE_USE_CPLUSPLUS11時才可用)
  • 將Queue :: AddTail()的隊列和數組重載重命名為AddTailMulti(),以避免與新的C ++ 11模板解析支持衝突。
  • 將Queue :: AddHead()的Queue和數組重載重命名為AddHeadMulti(),以避免與新的C ++ 11模板解析支持衝突。
  • 通過調用assert(false)替換MCRASH_IMPL宏。
  • 更多Android兼容性調整。
  • tests文件夾中的許多程序都沒有在C ++ 11下編譯。固定的。
  • 修復了clang靜態分析工具檢測到的幾個潛在錯誤。

版本5.91中的新功能

  • 為Hashtable類添加了EnsureCanPut()便捷方法。
  • 為Queue類添加了EnsureCanAdd()便捷方法。
  • 將DoMutexAtomicIncrement()更改為內聯函數,以使其更有效。
  • 更改了QMessageTransceiverThread和QAcceptSocketsThread以調用QCoreApplication :: postEvent()而不是QApplication :: postEvent(),以允許非GUI Qt應用程序。
  • 更新了初學者指南文檔,以反映MUSCLE改進的UDP支持。
  • 合併了Jean-FranA§oisMullet提供的一些Android兼容性更改。
  • 由於操作順序問題,使用MUSCLE_USE_MUTEXES_FOR_ATOMIC_OPERATIONS編譯標誌會導致MUSCLE在啟動時崩潰。現在已經解決了這個問題。
  • 以前只有在沒有其他AtomicCounter實現可用時才使用MUSCLE_USE_MUTEXES_FOR_ATOMIC_OPERATIONS編譯標誌。現在該標誌具有更高的優先級,因此設置該標誌意味著將使用互斥鎖,即使有另一種(更有效的)機制可用。

版本5.90中的新功能

  • 向DataIO類添加了一個GetPacketMaximumSize()方法,以允許網關代碼更智能地處理UDP樣式的分組通信。
  • MessageIOGateway現在可以與UDPSocketDataIO結合使用。
  • 為Message.h添加了CreateObjectFromArchiveMessage()模板化函數,作為GetArchiveMessageFromPool()等的恢復端對應物。
  • AtomicCounter :: AtomicIncrement()現在返回一個布爾值(如果新計數器值等於1,則為true)。
  • 修改了HashtableIterator類,以便即使沒有指定HTIT_FLAG_NOREGISTER標誌,只讀Hashtable迭代現在也是線程安全的。
  • 在SetupSystem.h中添加了一個muscle_thread_id類,以實現中立的方式正確表示線程ID。
  • 添加了“死鎖”程序到測試文件夾。該程序故意冒著造成僵局的風險,作為鍛煉/展示死鎖定試驗的一種方式。
  • 添加了對-DMUSCLE_AVOID_THREAD_SAFE_HASHTABLE_ITERATORS命令行標誌的支持,適用於那些寧願避免自動線程安全開銷並承諾在必要時手動提供HTIT_FLAG_NOREGISTER參數的人。
  • 為GetHostByName()函數添加了一個可選的LRU查找緩存,以便在反复解析相同的主機名時它可以更快地返回。
  • 添加了一個SetHostNameCacheSettings()函數,用於在GetHostByName()中啟用和調整LRU查找緩存。
  • 添加了對“dnscache”的支持和“dnscachesize” HandleStandardDaemonArgs()中的命令行參數,以允許命令行指定LRU查找緩存的行為。
  • 修改了Hashtable類,以便_iterHead,_iterTail和_freeHead成員值現在是uint32s而不是指針,以減少內存使用量。
  • 刪除了ThreadLocalStorage :: SetFreeHeldObjectsOnExit()方法,並在其構造函數中添加了一個布爾參數,因為pthreads不允許在調用pthread_key_create()之後更改該設置。
  • 將GetCurrentThreadID()作為靜態成員函數移動到muscle_thread_id類中,並將其更改為返回一個muscle_thread_id對象而不是unsigned long。
  • 更改了“"”中沒有已知IP地址的會話的默認主機名。到“_unknown_”,因為前一個字符串中的尖括號在5.84版本中具有特殊含義,並且可能以非預期的方式乾擾節點路徑匹配。
  • Message.cpp中的CalculateChecksum()方法已被修改為在檢測數據轉置差異方面更加健壯。
  • 從AtomicCounter.h中刪除了MUSCLE_USE_QT_FOR_ATOMIC_OPERATIONS支持,因為Qt的QAtomicInt類不支持AtomicIncrement()方法的新返回值所需的功能。
  • 刪除了MessageIOGateway :: FlattenMessage()和MessageIOGateway :: UnflattenMessage()。在他們的位置添加:MessageIOGateway :: FlattenHeaderAndMessage()和MessageIOGateway :: UnflattenHeaderAndMessage()。這些新方法同時處理頭字節和消息體。
  • 在tests文件夾中添加了一個udpproxy.vcproj文件,以幫助在Windows下編譯udpproxy。
  • 消息:Flatten()現在迭代消息中的字段一次,而不是兩次。
  • GetCurrentThreadID()現在是一個內聯函數,因為它現在可能經常被HashtableIterator調用。
  • 修改deadlockfinder代碼以使用Queues而不是Hashtables,因為muscle_thread_id不能再用作Hashtable鍵類型。
  • 修復了testudp.cpp以正確使用MessageIOGateway進行UDP通信。
  • 稍微調整FilePathInfo.cpp中的ifdef,以便在使用不提供它的MacOS / X SDK時不會訪問statInfo.st_birthtimespec。
  • MessageDataIOGateway不再嘗試從無法重新充氣的zlib-deflated數據緩衝區中取消消息。
  • 修復了SendDataUDP()中的一個錯誤,該錯誤可能導致SendDataUDP()在使用非阻塞模式發送到多播地址時錯誤地返回錯誤,並且輸出緩衝區已滿。

版本5.85中的新功能

  • 對MessageIOGateway :: DoInputImplementation()和Message :: Unflatten()中的所有錯誤路徑添加了LogTime(MUSCLE_LOG_DEBUG)調用,以便更容易確定TCP連接何時因數據而中止損壞。
  • 添加了PreviousOperationHadTransientFailure()函數,該函數返回true iff errno是EINTR或ENOBUFS。
  • 指定spamspersecond = -1現在會導致hexterm盡快發送垃圾郵件數據。
  • SocketMultiplexer.h的MUSCLE_USE_POLL實現正在向WSAPoll()提供POLLERR,但WSAPoll()不支持POLLERR,因此WSAPoll()會在發生這種情況時返回錯誤。在Windows下編譯時過濾掉POLLERR,解決了這個問題。
  • 修復了返回ENOBUFS的send()可能導致套接字連接被終止的錯誤,即使ENOBUFS不是致命的情況。
  • 定義MUSCLE_USE_POLL時,SocketMultiplexer.cpp無法編譯。固定的。
  • ZLibCodec :: Deflate()方法無法壓縮非常大的緩衝區中的所有數據(例如超過42MB)。固定的。

版本5.84中的新功能

  • StringMatcher類的數值範圍語法已擴展,現在您可以指定多個範圍。例如,“”將匹配字符串“19”,“20”,“21”,“25”,“30”,“31”,[...]和“50”。
  • 將GetCurrentTime64ForRunTime64()和GetRunTime64ForCurrenTime64()轉換函數添加到TimeUtilityFunctions.h。
  • 向DataNode類添加了GetDescendant()實用程序方法。
  • 將C ++ 11 move-constructors和move-assignment-operators添加到Hashtable,Queue,String,Message和ByteBuffer類中。為了向後兼容舊編譯器,只有在編譯行中指定了-DMUSCLE_USE_CPLUSPLUS11時才會編譯此代碼。
  • 如果指定了-DMUSCLE_FAKE_SHARED_MEMORY,則SharedMemory類現在將自身綁定到非共享內存類中。
  • 在tests文件夾中添加了testfilepathinfo測試。
  • 更新了所有版權聲明標題,以閱讀2000-2013 Meyer Sound。
  • 在宏令牌(例如UINT32_FORMAT_SPEC)和字符串常量(例如“Hello”)之間添加了空格,以使C ++ 11編譯器滿意。
  • ByteBuffer.cpp的語法錯誤會阻止它在big-endian主機上進行編譯。固定的。
  • 僅適用於MacOS / X:使用Mach等效替換已棄用的Carbon函數調用,以避免10.8.x下的棄用警告。

版本5.83中的新功能

  • 添加了InflateByteBuffer()和DeflateByteBuffer()的便利版本將ByteBufferRef作為參數。
  • 從AbstractMessageIOGateway類中刪除了一些過時/未使用的方法(EnsureBufferSize()和FreeLargeBuffer())。
  • 修正了delphi子文件夾中註釋中的一些拼寫錯誤。
  • 在MSVC下編譯並且定義了-DMUSCLE_AVOID_MINIMIZED_HASHTABLES時,Hashtable類不再生成警告。
  • 修正了IPAddressAndPort :: ToString()中的一個錯誤,當(preferIPv4Style)設置為false時,導致IPv4地址字符串被格式化。

類似的軟件

CloverETL Engine
CloverETL Engine

11 Apr 16

Qercus
Qercus

14 Apr 15

MDB Tools
MDB Tools

3 Jun 15

顯影劑的其他軟件 Jeremy Friesner

AudioMove
AudioMove

2 Jun 15

意見 MUSCLE

評論沒有發現
添加評論
打開圖片!