套接字描述符
#includeint socket( int domain, int type, int prootocol);
返回值:若成功,返回檔案(套接字)描述符,若出錯,返回 -1
域
描述af_inet
ipv4 網際網路域
af_inet6
ipv6網際網路域
af_unix
unix域
af_upspec
未指定
name purpose man page
af_unix, af_local local communication unix(7)
af_inet ipv4 internet protocols ip(7)
af_inet6 ipv6 internet protocols ipv6(7)
af_ipx ipx - novell protocols
af_netlink kernel user inte***ce device netlink(7)
af_x25 itu-t x.25 / iso-8208 protocol x25(7)
af_ax25 amateur radio ax.25 protocol
af_atmpvc access to raw atm pvcs
af_packet low level packet inte***ce packet(7)
型別
描述sock_dgram
固定長度的、無連線的、不可靠的報文傳遞
sock_raw
ip協議的資料報連線
sock_seqpacket
固定長度的、有序的、可靠的、面向連線的報文傳遞
sock_stream
有序的、可靠的、雙向的、面向連線的位元組流 協議
描述ipproto_ip
ipv4 網際協議
ipproto_ipv6
ipv6 網際協議
ipproto_icmp
網際網路控制報文協議
ipproto_raw
原始ip資料報協議
ipproto_tcp
傳輸控制協議
ipproto_udp
使用者資料報協議
我們在來區分一下sock_dgram和sock_stream這兩種套接字型別
套接字的shutdown
#includeint shutdown(int sockfd, int how);
返回值:若成功,返回0,若失敗,返回 -1
#includeuint32_t htonl( uint32_t hostint32 ) ; 返回值:以網路位元組序表示的32位整數
uint16_t htons( uint16_t hostint16); 返回值:以網路位元組序表示的16位整數
uint32_t ntohl( uint32_t netint32); 返回值:以主機位元組序表示的32位整數
uint16_t ntohs( uint16_t netint16); 返回值:以主機位元組序表示的16位整數
位址格式
在linux下中,該結構定義為:
struct sockaddr
struct in_addr
struct sockaddr_in
#includeconst char *inet_ntop(int domain,const void *restrict addr, char *restrict str, socklen_t size);
int inet_pton(int damain, const char* restrict str, void *restrict addr);
返回值:若成功,返回1,;若格式無效,返回0;若出錯,返回 -1
將套接字與位址關聯#includeint bind(int sockfd, const struct sockaddr *addr, socklen_t len);
返回值:若成功,返回0;若出錯,返回 -1
在程序正在執行的計算機上,指定的位址必須有效;不能指定乙個其他機器的位址。
位址必須和建立套接字時的位址族所支援的格式相匹配。
位址中的埠號必須不小於1024,除非該程序具有相應的特權。
一般只能將乙個套接字端點繫結到乙個給定位址上,儘管有些協議允許多重繫結。
建立連線
#includeint connect(int sockfd, const struct sockaddr *addr, socklen_t len);
返回值:若成功,返回0;若出錯,返回 -1
1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9
10 #define serv_port 9527
11 12 int main(void)
13 59
60 /*關閉鏈結*/
61 close(sfd);
62 close(cfd);
63 64 return 0;
65 }
1 #include 2 #include 3 #include 4 #include 5 #include 6
7 #define serv_ip "127.0.0.1"
8 #define serv_port 9527
9 10 int main(void)
11 38
39 /*關閉鏈結*/
40 close(sfd);
41 42 return 0;
43 }
網路IPC 套接字
1.套接字是通訊端點的抽象。與應用程式要用檔案描述符訪問檔案一樣,訪問套接字也需要用套接字描述符。套接字描述符在unix系統是用檔案描述符實現的。要建立乙個套接字,可以呼叫socket函式。include int socket int domain,int type,int protocol 返回值...
UNIX 網路IPC套接字
unix高階環境程式設計 linux秉承著萬物皆檔案的思想,把套接字也弄成了以檔案描述符形式描述的的檔案。1.int socket int domain,int type,int protocol domain分af inet,af inet6,af unix,af upspec 未指定 type分...
APUE 網路IPC 套接字之套接字選項
套接字機制提供兩個套接字選項介面來控制套接字的行為。乙個介面用來設定選項,另乙個介面允許查詢乙個選項的狀態。可以獲取或設定的三種選項 1 通用選項,工作在所有套接字型別上。2 在套接字層次管理的選項,但是依賴於下層協議的支援。3 特定與某協議的選項,為每個協議所獨有。single unix spec...