前面我們實現了完整的tcp通訊, 現在我們可以來考慮為通訊加上日誌記錄的功能. 實現日誌記錄可以直接將資料寫入檔案中.
這裡採用管道實現程序間通訊, 通過乙個單獨的程序來記錄日誌.
主要用到的就是檔案的建立, 無名管道以及程序間通訊的方法.
以下是刪除了大部分的服務端**, 只留下了修改過後的**. 這裡採用的是帶緩衝的fwrite
函式實現向檔案裡寫入資料. 因為採用的fwrite
是全緩衝, 所以在寫完資料之後必須使用fflush
函式將緩衝區的內容真正的寫入到檔案中. 如果沒有這個步驟, 那麼日誌就不會有任何資料記錄了.
void
doservice
(int servicefd)
fclose
(fp)
;exit(1
);}int n, eventnum;
while(1
)}}
當然也可以使用不帶緩衝區的函式, 這在linux環境下可以執行. 同樣,lseek
函式必須加上, 不然每次服務端都會將資料清除在重新記錄.
void
doservice
(int servicefd)
close
(filefd)
;exit(0
);}int n, eventnum;
while(1
)}}
其實記錄日誌對服務端也是很重要的, 本節只是介紹了乙個很簡單的方法, 並且日誌也不一定是記錄的, 這個以後有時間或者有興趣的可以嘗試更加好的方法和記錄方式. 同樣, 管道在網路程式設計中也有多種不同的使用方法. 如 :dup
繫結輸出, **訊號統一(在程序池可以看到)**等.
TCP的套接字
摘自 深入理解計算機網路 王達著 機械工業出版社 1.ipv4資料報頭部格式 2.ipv6資料報頭部格式 3.ipv4資料報的封裝與解封裝 4.ipv4資料報的分段與重組 5.arp協議報文格式及arp表 6.arp位址解析原理 7.icmp協議及報文格式 8.ipv6協議族的其它協議 9.tcp的...
TCP套接字程式設計
網路程式設計又稱為套接字程式設計,為了與遠端計算機進行資料傳輸,需要連線到網際網路,而程式設計中的 套接字 就是用來連線該網路的工具。它本身具有連線的含義,還可以表示為兩台計算機之間的網路連線。4.呼叫accept函式受理連線請求 基於tcp的服務端 客戶端 tcp伺服器端預設函式呼叫順序 sock...
TCP套接字程式設計
對於socket不理解的可以檢視 c語言通過socket程式設計實現tcp通訊,linux socket程式設計 socket詳解 先看看程式效果圖 提示如果伺服器,直接通過ctrl z關閉,這樣程式占用的位址不會釋放,需要以下操作 1.ps 檢視程序 2.kill 9 程式pid 強制殺死程序 服...