良好的移植性
利用標準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...