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

2021-10-11 05:48:21 字數 1201 閱讀 3771

系統讀寫函式:read()、write()

標準i/o函式:fgets()、fputs()

系統讀寫函式不帶緩衝區,而標準i/o函式自帶緩衝區。

在讀寫比較大的檔案的時候,標準i/o函式更快。

【辨】系統函式 讀寫的輸入是:檔案描述符;

標準i/o函式 讀寫的輸入是:file 結構體指標。

#include

int fgetc(file *stream);

char *fgets(char *s, int size, file *stream);

#include

int fputc(int c, file *stream);

int fputs(const char *s, file *stream);

​ 若 stream 寫stdout, 則直接輸出到終端。

#include

file *fdopen( int fildes, const char *mode );

功能:​ 將建立套接字時返回的檔案描述符轉換為標準i/o函式中使用的 file結構體指標。

引數:​ fildes:需要轉換的檔案描述符

​ mode:將要建立的 file結構體指標的模式(mode)資訊;

​ 「r」 :讀模式

​ 「w」 :寫模式。

返回值:

​ 成功,返回轉換的file結構體指標;失敗,返回null。

#include

int fileno( file *stream );

功能:​ (與 fdopen() 相反)file結構體指標轉換為套接字。

引數:​ stream:file結構體指標

返回值:

​ 成功,返回轉換後的檔案描述符;失敗,返回-1。

1)請說明標準i/o函式的2個優點。它為何擁有這2個優點?

答:基於ansix標準具有良好的一致性;

可以利用緩衝提高效能。

2)標準io中,「呼叫fputs函式傳輸資料時,呼叫後應立即開始傳送!」,為何這種想法是錯誤的?為了達到這種效果應新增哪些處理過程?

答:通過標準輸出函式的傳輸的資料不直接通過套接字的輸出緩衝區傳送,而是儲存在標準輸出函式的緩衝中,然後再用fflush函式進行輸出。因此,即使呼叫「fputs"函式,也不能立即傳送資料。如果想保障資料傳輸的時效性,必須經過fflush函式的呼叫過程。

**入口

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

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

TCP IP 第1章 理解網路程式設計和套接字

1.socket函式建立套接字。2.呼叫bind函式給套接字分配ip位址和埠號。3.呼叫listen函式轉為可接受請求狀態。4.呼叫accept函式受理連線請求 include include include include include include using namespace std v...

第17章 套接字程式設計

1.使用tcp從伺服器獲取資料 end.2.乙個簡單的tcp伺服器 socket server.erl module socket server export start nano server 0,loop 1,nano client eval 1 start nano server gen tc...