簡體   English   中英

無法發送到我的 mpsc 無界通道,收到 Err SendError

Cannot send to my mpsc unbounded channel, getting a Err SendError

提示:本站收集StackOverFlow近2千萬問答,支持中英文搜索,鼠標放在語句上彈窗顯示對應的參考中文或英文, 本站還提供   中文簡體   英文版本   中英對照 版本,有任何建議請聯系yoyou2525@163.com。

我正在嘗試從我的 tcp 連接中獲取輸出值,然后簡單地將其排隊到我的無界通道中。

我似乎收到了一個發送錯誤(代碼截圖下方顯示的錯誤)。

有什么我做錯了嗎?

#[tokio::main]
async fn main() -> Result<(), Box<dyn Error>> {

    #[derive(Debug)]
    struct Login {
        account: String,
        login: String,
        password: String
    }
    

    #[derive(Debug)]
    enum TcpCommand {
        Login,
        Incomding(String)
    }

    let (tx, mut rx) = mpsc::unbounded_channel::<TcpCommand>();

    tokio::spawn(async move {
        loop {
            let s = rx.blocking_recv();
            println!("received {:?}", s)
        }
    });


    let stream = TcpStream::connect("123.321.11.1:9800").await?;
    

    loop {
        let ready = stream.ready(Interest::READABLE | Interest::WRITABLE).await?;

        if ready.is_readable() {
            let mut data = vec![0; 1024];
            
            match stream.try_read(&mut data) {
                Ok(n) => {
                    println!("read {} bytes", n);
                    
                    match str::from_utf8(&data) {
                        Ok(v) => {
                        let res = tx.send(TcpCommand::Incomding(v[..n].to_string()));
                        println!("result res: {:?}", res);
                        println!("result: {}", v);
                        }
                        ,
                        Err(e) => panic!("Invalid UTF-8 sequence: {}", e),
                    };                
                   

                }
                Err(ref e) if e.kind() == io::ErrorKind::WouldBlock => {
                    continue;
                }
                Err(e) => {
                    //return Err(e.into());
                    println!("error: {}", e);
                }
            }

        }        
    }
}

我在嘗試發送到我的頻道時遇到錯誤:

 read 29 bytes result res: Err(SendError(Incomding("Please login...\r\n")) result: Please login...
問題暫未有回復.您可以查看右邊的相關問題.
5 Golang:無法發送頻道

為什么不在頻道上發送並阻止執行? 如何使這個星座工作,以便我可以向MoneyDive()發送信號並繼續執行? https://play.golang.org/p/1omlb7u6-A ...

7 std :: sync :: mpsc :: channel始終以相同順序

無論我運行該程序多少次,它始終以相同的順序顯示數字: 在操場上編碼。 輸出為: 如果我重建項目,順序將改變。 順序是在編譯時決定的嗎? ...

2015-09-23 12:34:00 1 117   rust
8 Memory 通過 mpsc 通道發送項目的成本

我有兩個線程讀取來自兩個源的消息的 stream,然后將它們轉發到第三個接收器,在那里按順序處理它們。 我擔心復制數據的開銷,因為我的消息位於每個線程的堆棧上,並且要通過mpsc移動它們,每個位都必須復制到接收器的堆棧中。 如果我嘗試通過將消息放入Box來緩解這種情況,那么只有指針會被發送到新堆棧, ...

2020-07-19 09:43:16 0 31   rust
9 將數據從流轉發到Tokio mpsc通道

我正在嘗試創建一個異步Rust客戶端,該客戶端連接到一端的WebSocket服務器和另一端的藍牙加密狗。 在這兩者之間,會有一些邏輯來過濾消息。 我在WebSocket端使用rust-websocket的async模塊。 我想隔離三個組件(websocket發送/接收,藍牙發送/接 ...

10 從 tokio mpsc 頻道獲取最新消息

我每秒和每 2 秒分別從 2 個頻道接收消息。 每次收到消息時都需要運行一個函數,但這個函數需要 5 秒。 我們填充result通道的速度比完成昂貴功能所需的時間要快。 以下代碼的輸出如下所示: 昂貴的函數總是使用隊列中的下一條消息運行,而不是最新的,因此它落后了。 如何使用result通道 ...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2022 STACKOOM.COM