試寫乙個名為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...