簡體   English   中英

如何在非阻塞 function 中將這個 write_all 轉換為通過 UDP 寫入字節?

[英]How to turn this write_all in non blocking function to write bytes through UDP?

我在 C 中有這個 function,我想用它在非阻塞模式下通過我的 udp 套接字寫入字節。 我應該完成“待完成”部分。 任何人都可以幫助我了解該怎么做嗎? 回憶寫 function 有什么意義嗎?

ssize_t nonblocking_write_all(int fd, const void *ptr, size_t n)
    {
        size_t n_left = n;
        while (n_left > 0) {
            ssize_t n_written = write(fd, ptr, n_left);
            if (n_written < 0) {
    
    /*** TO BE DONE START ***/
    
    
    /*** TO BE DONE END ***/
    
                if (n_left == n)
                    return -1; /* nothing has been written */
                else
                    break; /* we have written something */
            } else if (n_written == 0) {
                            continue;
            }
            n_left -= n_written;
            ptr += n_written;
        }
        assert(n - n_left >= 0);
        return n - n_left;
    }

這有效: n_written=nonblocking_write_all(fd,ptr,n_left);

暫無
暫無

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

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