writev 函式使用

2021-10-07 23:23:27 字數 1936 閱讀 6422

其中fd為乙個檔案描述符,vector為乙個陣列,陣列中每個元素都包含了乙個位址和乙個偏移量,count表示陣列的個數;

以下**:

服務端利用writev()從乙個stadus_line陣列和另外乙個本地檔案讀取檔案,併發送到客戶端;

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#define buffer_size 1024

static

const

char

* status_line[2]

=;intmain

(int argc,

char

*ar**)

const

char

*ip=ar**[1]

;int port=

atoi

(ar**[2]

);const

char

* file_name=ar**[3]

;struct sockaddr_in address;

bzero

(&address,

sizeof

(address));

address.sin_family=af_inet;

address.sin_port=

htons

(port)

;inet_pton

(af_inet,ip,

&address.sin_addr)

;int sock=

socket

(pf_inet,sock_stream,0)

;assert

(sock>=0)

;int ret=

bind

(sock,

(struct sockaddr*

)&address,

sizeof

(address));

assert

(ret!=-1

);ret=

listen

(sock,5)

;assert

(ret!=-1

);struct sockaddr_in client;

socklen_t length=

sizeof

(client)

;int confd=

accept

(sock,

(struct sockaddr*

)&client,

&length);if

(confd<0)

else

else

else

if( file_stat.st_mode & s_iroth )

//其他使用者可讀?

}else}if

(valid)

else

close (confd)

;delete

file_buf;

}close

(sock)

;return0;

}

客戶端的輸出:

高效能伺服器程式設計

nginx中writev函式的使用

nginx 非常的優秀,之前已經介紹了sendfile的使用來實現 記憶體零拷貝 今天我又理解了一下writev函式的使用,以nginx 1.6.0為例,在src os unix ngx writev chain.c的113行,如下圖 可以man 2 writev看下函式的概念 與writev相對應...

nginx中writev函式的使用

nginx的 非常的優秀,之前已經介紹了sendfile的使用來實現 記憶體零拷貝 今天我又理解了一下writev函式的使用,以nginx 1.6.0為例,在src os unix ngx writev chain.c的113行,如下圖 可以man 2 writev看下函式的概念 與writev相對...

高階I O之readv和writev函式

readv和writev函式用於在一次函式呼叫中讀 寫多個非連續緩衝區。有時也將這兩個函式稱為散布讀 scatter read 和聚集寫 gather write include ssize t readv int filedes,const struct iovec iov,int iovcnt ...