TcpServer & TcpClient โ€” ็ฝ‘็ปœ้€šไฟก็š„ไธค็ซฏ

็ฌฌ 12 ่ฏพ๏ผšTcpServer & TcpClient โ€” ็ฝ‘็ปœ้€šไฟก็š„ไธค็ซฏ ๅฏนๅบ”ๆบๆ–‡ไปถ๏ผš trantor/net/TcpServer.h / TcpServer.cc โ€” TCP ๆœๅŠกๅ™จ trantor/net/TcpClient.h / TcpClient.cc โ€” TCP ๅฎขๆˆท็ซฏ ไธ€ใ€ไธคไธช็ฑป็š„ๅฎšไฝ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ TcpServer โ”‚ โ”‚ loop_๏ผˆAccept ็บฟ็จ‹๏ผ‰ โ”‚ โ”‚ Acceptor๏ผˆ็›‘ๅฌ socket๏ผ‰ โ”‚ โ”‚ connSet_๏ผˆๆ‰€ๆœ‰่ฟžๆŽฅ็š„็”Ÿๅ‘ฝๅ‘จๆœŸ็ฎก็†๏ผ‰ โ”‚ โ”‚ ioLoops_๏ผˆI/O ็บฟ็จ‹ๆฑ ๏ผ‰ โ”‚ โ”‚ timingWheelMap_๏ผˆๆฏไธช I/O ็บฟ็จ‹ไธ€ไธชๆ—ถ้—ด่ฝฎ๏ผ‰โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ newConnection() โ–ผ TcpConnectionImpl๏ผˆๆฏไธช่ฟžๆŽฅไธ€ไธช๏ผ‰ ่ฟ่กŒๅœจ ioLoops_ ไธญ็š„ๆŸไธช EventLoop โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ TcpClient โ”‚ โ”‚ loop_๏ผˆๅ•ไธ€ EventLoop๏ผ‰ โ”‚ โ”‚ connector_๏ผˆๅ‘่ตท่ฟžๆŽฅ๏ผ‰ โ”‚ โ”‚ connection_๏ผˆๅฝ“ๅ‰่ฟžๆŽฅ๏ผŒmutex_ ไฟๆŠค๏ผ‰ โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ TcpServer ๆ˜ฏไธ€ๅฏนๅคš๏ผš็ฎก็†ไธ€ไธช็›‘ๅฌ็ซฏๅฃๅ’Œๅคง้‡ๅนถๅ‘่ฟžๆŽฅใ€‚ TcpClient ๆ˜ฏไธ€ๅฏนไธ€๏ผš็ฎก็†ไธ€ๆกๅˆฐๆœๅŠกๅ™จ็š„่ฟžๆŽฅ๏ผˆๅฏๆ–ญ็บฟ้‡่ฟž๏ผ‰ใ€‚ ...

March 25, 2025 ยท 11 min ยท 2242 words