今天測試的時候又發現,服務端有大量沒用連接的問題,而且客戶端關閉後,服務端也沒有讀到connection中的EOF,連接一直阻塞著,還是得上長連接心跳啊,服務端還好,主要是客戶端的Rust寫起來特別頭疼.
客戶端我想要的效果是和服務端建立的Tcp流,分為讀取和寫入兩個線程,並且同時工作,但是Rust中TcpStream的所有權只有一個,並且TcpStream的寫入操作需要可變引用,而在rust中一旦借出可變引用就無法再借出其他引用了… 這就導致我無法把這該死的玩意分到2個線程裡去執行。
不過在Google上找到了方法,這個是專門針對Tokio的,使用io.spilt把stream劈開,然後放在select上執行。
How to share tokio::net::TcpStream act on it concurrently?
但是如果只用標準庫又要怎麼寫…
算了不去想了。後面還要忙著tcp加密的事情