套接字的特性由三个属性确定 : 域, 类型, 协议.
1.域
AF_UNIX UNIX域协议 ( 文件系统套接字)
AF_INET ARPA因特网协议 (UNIX网络套接字)
...省略
2.类型
1) 流套接字: SOCK_STREAM
2) 数据报套接字 : SOCK_DGRAM
3. 协议
一般由套接字类型和套接字域来决定, 通常不需要选择. 将该参数设置为0表示使用默认协议.
套接字地址.
1) AF_UNIX
struct sockaddr_un {
sa_family_t sun_family; /* AF_UNIX */
char sun_path[]; /* pathname */
};
2) AF_INET
struct sockaddr_in {
short int sin_family; /* AF_INET */
unsigned short int sin_port; /* port number */
struct in_addr sin_addr; /* Internet address */
}; 该结构定义在头文件 netinet/in.h 中
IP地址结构in_addr被定义为:
struct in_addr {
unsigned long int s_addr;
};
1. 命名套接字
#include <sys/socket.h>
int bind( int socket, const struct sockaddr *address, size_t address_len);
2. 创建套接字队列
#include <sys/socket.h>
int listen( int socket, int backlog);
3.接受连接
#include <sys/socket.h>
int accept( int socket, struct sockaddr *address, size_t *address_len );
4.请求连接
#include <sys/socket.h>
int connect( int socket, const struct sockaddr *address, size_t address_len);
5.关闭套接字
close();