套接字和標準I O

2021-10-14 23:16:09 字數 1354 閱讀 1777

良好的移植性

利用標準i/o函式的緩衝可以提高效能(傳輸資料越多,效能提公升越大,但是在多執行緒中似乎優點問題)

server.cpp

#include #include #include #include #include #include #define max_buff_size 1024

void handlerror(char *message)

int main(int argc, char **ar**)

if(listen(sock, 5)) handlerror("listen() error");

socklen_t socklen = sizeof(sockadr);

file *pread = 0;

file *pwrite = 0;

char message[max_buff_size] = ;

while (true)

close(sock);

return 0;

}

client.cpp

#include #include #include #include #include #include #define max_buff_size 1024

void handlerror(char *message)

int main(int argc, char **ar**)

int sockread = dup(sock); // 複製檔案描述符

file *pwrite = fdopen(sockread, "w+");

file *pread = fdopen(sock, "r+");

if(0 == pwrite) handlerror("fdopen error by write");

fputs("星辰大海\n", pwrite); // 使用標準輸入

fclose(pwrite); // 關閉檔案和檔案描述符,但不關閉socket套接字。實現這點,關鍵在於dup函式

shutdown(fileno(pwrite), shut_wr); // 半關閉

if(0 == pread) handlerror("fdopen error by read");

char text[max_buff_size] = ;

fgets(text, sizeof(text), pread); // 使用標準輸出

fputs(text, stdout);

fclose(pread);

return 0;

}

執行命令:兩個終端分別輸入:./server 9090和./client 127.0.0.1 9090

19 高階I O函式 套接字和標準I O

之前我們一直使用的read,write函式以及它們的變體recv,send等函式執行i o,這些函式都是要使用描述符的,通常這些函式都作為unix核心中的系統呼叫實現。除了以上說的系統呼叫,我們也可以使用標準i o函式庫 standard i o libary 這個函式庫由 ansi c 標準進行規...

網路程式設計 15 套接字和標準IO

1。標準io函式具有良好的移植性,這些函式都是按照ansi c標準定義的 2。標準io函式可以利用緩衝提高效能 建立套接字時作業系統會準備io緩衝,此緩衝在執行tcp協議時發揮著重要的作用。若使用標準io函式,將得到額外的另一緩衝的支援 可以看到,使用標準io函式傳輸資料時,經過兩個緩衝。例如通過f...

《網路程式設計》 第15章 套接字和標準 I O

系統讀寫函式 read write 標準i o函式 fgets fputs 系統讀寫函式不帶緩衝區,而標準i o函式自帶緩衝區。在讀寫比較大的檔案的時候,標準i o函式更快。辨 系統函式 讀寫的輸入是 檔案描述符 標準i o函式 讀寫的輸入是 file 結構體指標。include int fgetc...