分類: socket程式設計
2008-09-20 18:29
801人閱讀收藏
舉報 socket
程式設計struct
資料結構
null
網路hostent
:
資料結構:
struct hostent;
詳細資料:
h_name --
主機的正式名稱;
h_aliases --
空位元組-
主機的別名;
h_addrtype --
主機ip
位址型別;
ipv4(af_inet),ipv6(af_inet6)
h_length --
主機ip
位址的位元長度;
h_addr_list --
零位元組-
主機網路位址指標;網路位元組序,所以要列印出的話要呼叫
inet_ntop()
批註:使用這個東西,首先要包含
2個頭檔案:
#include
#include
gethostbyname()
成功時返回乙個指向結構體
hostent
指標,或者是個空
(null)
指標。例子:
#include
#include
#include
#include
#include
#include
#include
int main(int argc, char *argv)
if ((h=gethostbyname(argv[1])) == null)
printf("host name : %s ", h->h_name);
printf("ip address : %s ",inet_ntoa(*((struct in_addr *)h->h_addr)));
return 0;
}注意:在使用
gethostbyname()
時,不能用
perror()
列印錯誤資訊(因為
errno
沒有使用),應該呼叫
herror().
struct hostent *gethostbyname(const char*name);
這個函式的傳入值是網域名稱或者主機名,例如:
「www.google.com」
等等。傳出值是乙個
hostent
的結構。如果函式呼叫失敗,將返回
null
。
sockaddr與
sockaddr_in
:
資料結構:
struct sockaddr
;此時:
struct in_addr
struct sockeaddr_in ;
此時:struct in_addrs_un_b;
structs_un_w;
u_longs_addr;
}s_un;
};inet_addr()
是將乙個點分制的
ip位址(如
192.168.0.1
)轉換為上述結構中需要的32位
ip位址(
0xc0a80001
)通常的用法是:
socket sockfd;
struct hostent *he;
struct sockaddr_in my_addr;
if ((sockfd=socket(af_inet,sock_stream,0)) == -1)
my_addr.sin_family=af_inet;
my_addr.sin_port=htons(myport);
my_addr.sin_addr.s_addr = htonl(inaddr_any);
bzero(&(my_addr.sin_zero,8);//zero the rest of the struct
if (bind(sockfd, (struct sockaddr *)&my_addr,sizeof(structsockaddr)) == -1)
Socket通訊 資料結構WSADATA
資料結構wsadata twsadata packed record wversion word whighversion word szdescription array 0.wsadescription len of char szsystemstatus array 0.wsasys stat...
socket程式設計相關函式
本文旨在整理一下linux下socket程式設計時一些常用的一些理解總結,如有不足希望大家批評指點 linux version 3.10.0 862.14.4.el7.x86 64 gcc version 4.8.5 20150623 red hat 4.8.5 28 gcc tcp的伺服器端soc...
資料結構程式設計
1 陣列部分 雜湊表思想 雜湊表也稱為雜湊表,是演算法終於時間和空間作出權衡的經典例子。當乙個表所有的鍵都是小整數時,便可以使用乙個陣列來實現無序的符號表,將鍵作為陣列的索引而陣列i中所儲存的值就是該鍵所對應的鍵值,即key value對應。雜湊表的思想也是這樣子的,只是雜湊表的鍵的型別更為複雜而已...