创建:
#include <sys/types.h>
#include <sys/socket.h>
int socket( int domain, int types, int protocol);
domain:
AF_UNIX, AF_LOCAL // address family 地址是文件名
AF_INET //IPV4
AF_INET6 //IPV6
types:
1. stream: SOCK_STREAM //流
2. datagram: SOCK_DGRAM //数据报
socket返回的描述符,用read和write调用
close系统调用结束socket连接
不同的domain 有不同的地址格式:
AF_UNIX : 定义在sys/un.h 中
struck sockaddr_un {
sa_family_t sun_family;
char sun_path[ ];
};
AF_INET : 定义在netinet/in.h中
struct sockaddr_in {
short int sin_family;
unsigned short int sin_port;
struct in_addr sin_addr;
}; 其中:
sruct in_addr {
unsigned long int s_addr;
};
命名: 要使用创建好的套接字,需要命名.
#include <sys/socket.h>
int bind( int socket, const struct sockaddr *address, size_t address_len); //succes return 0.
建立套接字队列: 保存未处理的请求
#include <sys/socket.h>
int listen( int socket, int backlog); //backlog位保存的最大个数 成功 返0
接收连接:
服务器程序建立并命名了套接字后 可通过accept系统调用来等待客户建立对该套接字的连接
#include <sys/socket.h>
int accept( int socket, strucct sockaddr *sddress, size_t *address_len);