socket编程学习提纲(自用)

229 阅读1分钟

IPV4套接字地址结构

1.#include <netinet/in.h> struct in_addr,struct sockaddr_in

2.#include <sys/socket.h> (struct sockaddr *)通用套接字地址结构

3.字节排序函数 #include <netinet/in.h>

unint16_t htons(uint16_t host16bitvalue)

unint32_t htonl(uint32_t host32bitvalue)

unint16_t ntohs(uint16_t net16bitvalue)

unint32_t ntohl(uint32_t net32bitvalue)

4.字节操控函数 #include <strings.h>

void bzero(void *dest,size_t nbytes); #套接字地址结构初始化

#include <string.h>

void *memset(void *dest , int c, size_t len);

5.#include <arpa/inet.h>

int inet_aton(const char *strptr,struct in_addr *addrptr);

in_adddr_t inet_addr(const char*strptr);#弃用

char *inet_ntoa(struct in_addr inaddr);

int inet_pton(int family,const char *strptr,void *addrptr);

cosnt char *inet_ntop(int family,const void *addrptr,char *strptr,size_t len);

6.read 和 write

#include <unistd.h>

ssize_t read(int filedes, void *buf,size_t nbytes);

ssize_t write(int filedes, void *buf,size_t nbytes);

基本套接字编程

1.socket函数

#include <sys/socket.h>

int socket(int family ,int type, int protocol)

2.connect函数

int connect (int sockfd, const struct sockaddr *servaddr,socklen_t addrlen);

3.bind函数

int bind(int sockfd , const struct sockaddr *myaddr,socklem_t addrlen);

4.listen函数

int listen(int sockfd, int backlog);

5.accept函数

int accept(int sockfd, struct sockaddr *cliaddr,socklen_t *addrlen)

6.#inlcude <unistd.h>

pid_t fork(void);

6个exec函数;

7.并发服务器框架

//并发服务器框架
pid_t pid;
int  listenfd,connfd;

listenfd = Socket(...);

/* 填完sockaddr_in{}
Bind(listenfd,...);
Listen(listenfd,LISTENQ);

for(;;){
    confd = Accept(listenfd,...);
    if (pid = fork() == 0){
        Close(listenfd);
        doit(connfd);
        Close(connfd);
        exit(0);
    }
    Close(connfd);
}

8.#include <unistd.h>

int close(int sockfd);

9.描述符引用计数

  1. #include <sys/socket.h>

int get sockname(int sockfd,struct sockaddr *localaddr,socklen_t *addrlen);

int getpeername(int sockfd,struct sockaddr *peeraddr,socklen_t *addrlen);

11.wait和waitpid

#include <sys/wait.h>

pid_t wait(int *statloc);

pid_t waitpid(pid_t pid,int *statloc,int options)