socket程式設計需要哪些標頭檔案

2021-08-28 18:33:06 字數 4458 閱讀 6873

一 三種型別的套接字:

1.流式套接字(socket_stream)

提供面向連線的可靠的資料傳輸服務。資料被看作是位元組流,無長度限制。例如ftp協議就採用這種。

2.資料報式套接字(socket_dgram)

提供無連線的資料傳輸服務,不保證可靠性。

3.原始式套接字(socket_raw)

該介面允許對較低層次協議,如ip,icmp直接訪問。

二 基本套接字系統調有有如下一些:

建立套接字: socket()

繫結本機埠: bind()

建立連線: connect(),accept()

偵聽埠: listen()

資料傳輸: send(), recv()

輸入/輸出多路復用: select()

關閉套接只: closesocket()

三 資料型別

struct sockaddr

struct sockaddr_in

四 常用函式

1 socket()

標頭檔案:

#include #include 函式原型:

int socket(int domain, int type, int protocol)

domain: 協議型別,一般為af_inet

type: socket型別

protocol:用來指定socket所使用的傳輸協議編號,通常設為0即可

2 bind()

標頭檔案:

#include #include 函式原型:

int bind(int sockfd, struct sockaddr *my_addr, int addrlen)

sockfd: socket描述符

my_addr:是乙個指向包含有本機ip位址和埠號等資訊的sockaddr型別的指標

addrlen:常被設為sizeof(struct sockaddr)

3 connect()

標頭檔案:

#include #include 函式原型:

int connect(int sockfd, struct sockaddr *serv_addr, int addrlen)

sockfd: 目的伺服器的socket描述符

serv_addr:包含目的機器ip位址和埠號的指標

addrlen:sizeof(struct sockaddr)

4 listen()

標頭檔案:

#include 函式原型:

int listen(int sockfd, int backlog);

sockfd:socket()系統呼叫返回的socket描述符

backlog:指定在請求佇列中的最大請求數,進入的連線請求將在佇列中等待accept()它們。

5 accept()

標頭檔案:

#include #inlcude 函式原型:

int accept(int sockfd, void *addr, int addrlen)

sockfd:是被監聽的socket描述符

addr:通常是乙個指向sockaddr_in變數的指標,該變數用來存放提出連線請求服務的主機的資訊

addrlen:sizeof(struct sockaddr_in)

6 send()

標頭檔案:

#include 函式原型:

int send(int sockfd, const void *msg, int len, int flags);

sockfd:用來傳輸資料的socket描述符

msg:要傳送資料的指標

flags: 0

7 recv()

標頭檔案:

#include #include 函式原型:

int recv(int sockfd, void *buf, int len, unsigned int flags)

sockfd:接收資料的socket描述符

buf:存放資料的緩衝區

len:緩衝的長度

flags:0

8 sendto()

標頭檔案:

#include #include 函式原型:

int sendto(int sockfd, const void *msg, int len, unsigned int flags, const struct sockaddr *to, int tolen);

9 recvfrom()

標頭檔案:

#include #include 函式原型:

int recvfrom(int sockfd, void *buf, int len, unsigned int flags, struct sockaddr *from, int fromlen)

10 read() write()

int read(int fd, char *buf, int len)

int write(int fd, char *buf, int len)

11 shutdown()

close(sockfd)

int shutdown(int sockfd, int how)

netinet/if_ether.h   ether_arp的資料結構

netinet/ether.h 以太禎的網路位元組和ascii位元組的轉換,包括ether_ntoa(),ether_aton這樣的函式定義

netinet/ip.h 這個標頭檔案和linux/ip.h似乎很相似,也有iphdr的資料結構,同時還包括了timestamp結構,我的理解是,linux資料夾下的 ip.h是linux黑客編寫的ip標頭檔案,而這個則是gnu一開始就定義的標頭檔案,同時還包括了bsd中的ipheader結構定義。同理的還有該目錄 下的tcp.h等檔案

linux/ip.h iphdr的資料結構,以及一些ip層的資料定義,同理的還有tcp.h,udp.h等等

linux/if.h 主要的socket標頭檔案,似乎修改自unix的if.h,定義了網絡卡的介面資訊的巨集,例如iff_up.另外有數個重要的inte***ce的資料結構定義,包括ifreq,ifconf,ifmap

linux/if_packet.h 原始資料報的資料結構定義,包括sockaddr_pkt,sockaddr_ll,想接收原始資料報的不能錯過這個檔案。同理的還有if_ppp.h,if_tun.h等等

netinet/in.h 這個檔案作的事情就多了。埠巨集定義,著名ip(比如loopback),結構sockaddr_in,網路位元組轉換(ntoh,hton。。。。)。。。反正太多了,沒事的話就把這個檔案加到頭檔案包含裡吧

netdb.h 檔案如其名,包括結構hostent(主機環境),獲得主機的資訊的幾個函式(gethostbyname)。似乎這個就是定義主機的各項環境,例如hostname等等

net/bpf.h berkeley的資料報過濾標頭檔案,想用bpf進行包過濾的要重視一下這個檔案

net/ethernet.h 包括幾個乙太網的資料結構,ether_addr(mac幀結構),ether_header(以太幀的頭部)

//primitive system data types(包含很多態別重定義,如pid_t、int8_t等)   

//與套接字相關的函式宣告和結構體定義,如socket()、bind()、connect()及struct sockaddr的定義等

//i/o控制操作相關的函式宣告,如ioctl()

//某些結構體定義和巨集定義,如exit_failure、exit_success等

//某些結構體定義、巨集定義和函式宣告,如struct hostent、struct servent、gethostbyname()、gethostbyaddr()、herror()等

//某些函式宣告,如inet_ntop()、inet_ntoa()等

//某些結構體宣告、巨集定義,如struct sockaddr_in、proto_icmp、inaddr_any等

------------------------------

linux下socket編寫常用標頭檔案

#include //connect,send,recv,setsockopt等

#include #include // sockaddr_in, "man 7 ip" ,htons

#include //poll,pollfd

#include //inet_addr,inet_aton

#include //read,write

#include //gethostbyname

#include //perror

#include #include //errno

#include // memset

#include #include

**:

socket程式設計中需要用到的標頭檔案

sys socket.h 提供socket函式及資料結構 netinet in.h 定義資料結構sockaddr in netdb.h 提供設定及獲取網域名稱的函式 sys ioctl.h 提供對i o控制的函式 sys poll.h 提供socket等待測試機制的函式 unistd.h 提供通用的...

Socket程式設計中需要用到的標頭檔案

sys types.h 資料型別定義 sys socket.h 提供socket函式及資料結構 netinet in.h 定義資料結構sockaddr in netdb.h 提供設定及獲取網域名稱的函式 sys ioctl.h 提供對i o控制的函式 sys poll.h 提供socket等待測試機...

socket程式設計中需要用到的標頭檔案

sys types.h 資料型別定義 sys socket.h 提供socket函式及資料結構 netinet in.h 定義資料結構sockaddr in netdb.h 提供設定及獲取網域名稱的函式 sys ioctl.h 提供對i o控制的函式 sys poll.h 提供socket等待測試機...