基於 .NET Socket 非同步模式(底層 IOCP 完成端口),封裝為元件 MyTcpIpClient、MyTcpIpServer,支援訊息框架傳輸(長度前綴 + 資料流)。
Cortrol 0-9) 解析頭部長度、資料長度、分包重組資料流。Conn():BeginConnect → ConnectCallback → BeginReceive 進入接收迴圈。Send(Stream):將 Stream 依緩衝區大小分塊,每塊加上 8 字節頭部,BeginSend 非同步發送。ReceiveCallback:狀態機解析頭部長度、資料長度,重組完整 MemoryStream 觸發 Incept 事件。Listening():啟動專用執行緒跑 StartListening。StartListening:Bind/Listen → 迴圈 BeginAccept → AcceptCallback 建立 StateObject → BeginReceive。ReadCallback:同客戶端接收邏輯,重組資料流觸發 InceptServer 事件(攜帶 ServerSocket 與 MyTcpIpServer 參考以便回覆)。Send(Socket, Stream):指定目標 Socket 發送資料流。public class StateObject {
public byte[] buffer;
public Socket workSocket;
public MemoryStream Datastream = new MemoryStream();
public long residualSize, packSize;
public int Cortrol; // 狀態機步驟 0-9
}
Incept (收到資料)、Error (錯誤)。InceptServer、ErrorServer。Stream、Socket、Server 參考。