Linux網絡編程筆記

  1. 服務器和客戶端應用程序判斷對方是否已經關閉連接的方法:
    1)read系統調用返回0(收到結束報文段)
    2)當管道讀端關閉時,寫端文件描述符上的POLLHUP事件被觸發;
    當socket連接被對方關閉時,socket上的POLLRDHUP事件被觸發。

  2. IP地址轉換函數:

#include <arpa/inet.h>
int inet_pton(int af, const char* src, void* dst);
const char* inet_ntop(int af, const void* src, char* dst, socklen_t cnt);

inet_pton將用字符串表示的IP地址src轉換成用網絡字節序整數表示的IP地址。inet_ntop進行相反的轉換

3.帶RST標誌的報文段爲復位報文段,通知對方關閉連接或重新建立連接。產生復位報文段的3種情況:
1) 當客戶端訪問一個不存在的端口時,目標主機將給它發送一個復位報文段。
2) 客戶端向服務器處於TIME_WAIT狀態的端口發起連接時,也將收到復位報文段。
3) 希望異常終止一個連接時,向對方發送一個復位報文段,使用socket選項SO_LINGER來發送復位報文段。
4) 一端關閉或異常終止了連接,而對方沒有接收到結束報文段(FIN)還維持着原來的連接,這種狀態稱爲半打開狀態。向處於半打開狀態的連接寫入數據,對方將回復一個復位報文段。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章