取得本地主機名:
int gethostname(char *hostname, size_t size);
獲得主機名存到hostname中。
取得本地的資訊:
int getsockname(int sockfd, struct sockaddr *addr, int *addrlen);
addr存有返回的主機資訊。
示例:
struct sockaddr_in sa;
int len = sizeof(sa);
getpeername(sockfd, (struct sockaddr *)&sa, &len);
printf("本地ip:%s", inet_ntoa(sa.sin_addr));
取得對方主機的資訊:
int getpeername(int sockfd, struct sockaddr *addr, int *addrlen);
addr存有返回的主機資訊。
示例:
struct sockaddr_in sa;
int len = sizeof(sa);
getpeername(sockfd, (struct sockaddr *)&sa, &len);
printf("對方ip:%s", inet_ntoa(sa.sin_addr));
獲得dns資訊:
struct hostent *gethostbyname(const char *name);
struct hostent *gethostbyaddr(const char *addr, int len, int type);
返回了乙個指向struct hostent的指標,struct hostent定義如下:
struct hostent ;
#define h_addr h_addr_list[0] /* for backward compatibility */
對於如何獲得dns資訊,將在後面的程式片斷中詳細講解。
dns操作時的錯誤處理與普通程式不同,gethostbyname通過設定h_errno代表出錯號,對應的錯誤函式有hstrerror()和herror(),分別對應於strerror()和perror()這兩個普通的錯誤函式。
獲得或改變socket屬性
int getsockopt(int sockfd, int level, int name, char *value, int *optlen);
int setsockopt(int sockfd, int level, int name, char *value, int *optlen);
對於socket程式設計,level一般為常數sol_socket
name屬性型別,value屬性引數,optlen屬性記憶體塊的長度
常用的有:
so_rcvtimeo,so_sndtimeo:獲得或設定socket傳送/接收的timeout。
so_sndbuf,so_rcvbuf:獲得或設定socket傳送/接收的buffer大小。
so_broadcast:獲得或設定socket狀況,使之可以廣播傳送資料報。(只能用於udp方式)。
so_reuseaddr:設定該socket繫結的埠可以被重用。
注意:在linux系統中,如果乙個socket繫結了某個埠,該socket正常關閉或程式退出後,在一段時間內該埠依然保持被繫結的狀態,其他程式(或者重新啟動的原程式)無法繫結該埠。可以通過呼叫以下語句避免該問題:
opt = 1;
len = sizeof(opt);
setsockopt(sockfd,sol_socket,so_reuseaddr,&opt,&len);
獲得或改變socket的i/o屬性:
int ioctl(int sockfd,long cmd,unsigned long* argp);
cmd屬性型別,argp屬性的引數。
常用的有:
fionread,返回socket緩衝區中未讀資料的位元組數
fionbio,argp為零時為阻塞模式,非零時為非阻塞模式
siocatmark ,判斷是否有未讀的帶外資料(僅用於tcp協議),返回true或false
int fcntl(int fd, int cmd, long arg);
f_setfl,arp為o_nonblock時進入非阻塞模式,為0時進入阻塞模式。
f_getfl,獲得屬性。
ip位址轉換函式:
unsigned long inet_addr (const char *cp);
inet_addr將乙個點分十進位制ip位址字串轉換成32位數字表示的ip位址(網路位元組順序)。
char* inet_ntoa (struct in_addr in);
inet_ntoa將乙個32位數字表示的ip位址轉換成點分十進位制ip位址字串。
這兩個函式互為反函式
位元組順序轉換
htons()--"host to network short"
htonl()--"host to network long"
ntohs()--"network to host short"
ntohl()--"network to host long"
linux 網路的引數及設定
常用網路協議 ipv4 ip32位 二進位制 11111110.11111110.11111110.11111110.254.254.254.254 子網掩碼 用來表示ip的網路位和主機位 網路為表示網路區域 主機位表示網路區域中的某台主機 netmask非0位所對應的ip位址數值為這個ip的網路位...
Linux的網路引數設定
前面講解了llinux 的ip組成,下面就講一下linux的網路設定和資料傳遞。其實這地方對運維的人員來說,不會要精通,但還是要了解。必要時刻還會用到的 電腦之間資料的傳遞 資料的傳遞要分為下面幾層。osi七層模型 應用層 表示層 會話層 傳輸層 網路層 資料鏈路層 物理層 資料封裝過程 mac幀頭...
LoadRunner中引數的設定
loadrunner 中引數的設定 引數個數 10個 tester1 tester2 tester3 tester10 迭代次數 2次 場景設定 一 sequential each iteration 執行結果 vugen中 1個使用者 第一次迭代 iteration 取值為tester1 第二次迭...