ESFramework 是一套高度可復用、靈活強大的 .NET 通訊框架,全採 C# 開發。內建 TCP/UDP 支援、文字/流協議、多種網路引擎,讓開發者無需處理 Socket 底層細節,專注於高層業務邏輯。適用於 IM 系統、視訊會議、資料採集等所有分散式通訊場景。


包含發送者/接收者 ID、檔名、檔案大小等資訊。部分屬性僅發送方有效(如 SendingFileParas),部分僅接收方有效(如 LocalSaveFilePath),部分支援斷點續傳(如 OriginFileLastUpdateTime)。
public enum FileTransDisrupttedType
{
ActiveCancel, // 主動取消
DestCancel, // 對方取消
DestOffline, // 對方掉線
SelfOffline, // 自己掉線/網路中斷
DestReject, // 對方拒絕
OtherCause // 其他(檔案讀取失敗等)
}
public interface IFileTransferingEvents
{
event CbGeneric FileTransStarted;
event CbGeneric FileResumedTransStarted;
event CbFileSendedProgress FileTransProgress; // fileID, total, transferred
event CbGeneric FileTransDisruptted;
event CbGeneric FileTransCompleted;
}
注意:事件在背景執行緒觸發,更新 UI 需轉發至 UI 執行緒。
SendingSpanInMSecs:發送頻率(毫秒),追求速度可設 0FilePackageSize:封包大小,網際網路建議 2048~4096,區域網路可設 204800+(可達 30MB/s+)public interface IFileController
{
IFileTransferingEvents FileSendingEvents { get; }
IFileTransferingEvents FileReceivingEvents { get; }
void BeginSendFile(string accepterID, string filePath, string comment, out string fileID);
void BeginSendFile(string accepterID, string filePath, string comment, SendingFileParas paras, out string fileID);
void CancelFileTransfering(string fileID);
void CancelFileTransferingAbout(string destUserID);
TransmittingFileInfo GetFileInfo(string fileID);
}
fileID 為傳輸項目唯一標識(非檔案標識)。accepterID 可傳 NetServer.SystemUserID 直接發送給伺服器public interface IFileHandler : IBusinessHandler
{
string ReadyToAcceptFile(string senderID, string fileName, long fileLength,
string comment, string fileID, ResumedFileItem resumedFileItem);
void OnResponseOfReceiver(TransmittingFileInfo info, bool agreed);
}
resumedFileItem 不為 null 且路徑相同則續傳),回傳 null 表示拒絕接收方同意後,相關事件將透過 IFileOutter 的 IFileTransferingEvents 依序觸發。