《UNIX 網路程式設計》 第三章課後習題第三題

2021-08-07 14:31:20 字數 1382 閱讀 2418

試寫乙個名為inet_pton_loose的函式,它能處理如下情形:如果位址族為af_inet且inet_pton返回0,那就呼叫inet_aton看是否成功;類似地,如果位址族為af_inet6且inet_pton返回0,那麼就呼叫inet_aton看是否成功,若成功返回其ipv4對映的ipv6位址。

#include 

#include

#include

#include

#include

#include

/**

具體的轉換過程,不做詳細注釋,有更好的實現方式

**/int

inet_pton_loose(int family,const

char *strptr,void *addrptr)

if(family == af_inet6)

memcpy(addrptr,(void *)&v6addr,sizeof(struct in6_addr));

return

1;

}

} return

0;

}

return

1;

} /**

獲取輸入,辨別是ipv4 還是ipv6 並做相應的處,理完成後輸出使用者的輸入。沒有新增錯誤處理。

**/int

main(int argc,char **argv)

} if(strcmp(addrflag6,argv[1]) == 0)

} return

1;

}

#include "unp.h"

in_addr_t inet_pton_loose(int family, const

char *strptr,void *addrptr)

else

if ((family == af_inet6) && (inet_pton(family,strptr,addrptr) == 0))

else

return

0; }

return0;}

int main (int argc, char **argv)

bzero(&addr,sizeof(struct in_addr));

memset(s,0,sizeof(s));

strcpy(s,argv[2]);

if(atoi(argv[1]) == 0)

else

if(atoi(argv[1]) == 1)

return

0; }

《UNIX 網路程式設計》 第三章課後習題第三題

按自己的想法實現的,肯定有更好的實現方式,放在這裡留個紀念。從下面開始 include include include include include include 具體的轉換過程,不做詳細注釋,有更好的實現方式 intinet pton loose int family,const char s...

unix 網路程式設計 第三章

包裹函式 就是對有錯誤返回值的函式的封裝。在unix網路程式設計中用大寫表示。err sys 必須要errno 的值才能輸出錯誤?執行緒函式遇到錯誤的時候 不設定errno的值,而是把error的值作為函式的返回值。必須檢查某個確定的錯誤,並處理它,而不是終止程序執行。unix errno 值 每當...

UNIX環境高階程式設計習題 第三章

3.1 當讀 寫磁碟檔案時,本章中描述的函式確實是不帶緩衝機制的嗎?請說明原因 1 本章中描述的read和write函式都是系統呼叫,這兩個函式都是在核心中進行的,所以是不帶緩衝的i o函式。而帶有緩衝機制的函式是以記憶體空間作為緩衝區,避免不當操作降低多寫效能。3.2 編寫乙個與3.12節中dup...