1.创建套接字
int socket(int domain, int type, int protocol)
int domain:常用AF_INET
int type:常用SOCK_STREAM
int protocol:默认值为0
返回-1则创建不成功,返回socket编号
2.套接字地址
AF_INET域中:
struct sockaddr_in{
short int sin_family;
unsigned short int sin_port;
struct in_addr sin_addr;
};
struct in_addr{
unsigned long int s_addr;
};
赋值实例:
struct s_add;
s_add.sin_family=AF_INET;
s_add.sin_port=8081;//s_add.sinport=htons(int portnum)
s_add.sin_addr.s_addr=int_addr(“128.0.0.1”)//s_add.sin_addr.s_addr=htonl(INADDR_ANY);
3.套接字的名字bind函数
int bind(int socket, const struct sockaddr *address, size_t address_len)
int socket:函数socket的返回值
const sockaddr *address:含有地址、端口信息的结构体
size_t address_len:定义的结构体变量的长度
返回0为成功,否则为-1
4.监听用户端listen
int listen(int socket, int backlog)
int socket:函数socket返回的值
int backlog:队列长度设置,常用值5
调用成是返回0,不成功为-1
5.接受连接
int accept(int socket,struct sockaddr *address,size_t *address_len)
int socket:函数socket的返回值
struct sockaddr *address:用户端的地址
size_t *address:用户端地址结构体的长度
当返回-1时连接失败
6.连接请求
int connect(int socket,const struct sockaddr *address,size_t address_len)
int socket:函数socket的返回值
struct sockaddr *address:连接的服务器地址
size_t *address:址结构体的长度
当返回-1时连接失败
7.关闭连接
close(int socket)
8.读写
read(int socket, char *dat, size)
write(int socket, char *dat, size)