TCPIP编程

1、线程函数遇到错误时不设置unix标准errno值,而是作为函数返回值返回给调用者

2、MTU = MSS + IP头(20) + TCP头(20)

 

3、套接字地址结构:

通用套接字地址结构
struct sockaddr{
    unit8_t sa_len;
    sa_family_t sa_family;        /* AF_XXX */
    char sa_data[14];            /* 协议地址 */
};
IPv4地址结构
struct in_addr{
    in_addr_t s_addr;            /* 32bit addr */
};

struct sockaddr_in{
    unit8_t sin_len;
    sa_family_t sin_family;    /* AF_INET */
    in_port_t sin_port;
    struct in_addr sin_addr;
};
通配地址    servaddr.sin_addr.s_addr = htonl(INADDR_ANY);

 

4、字节序转换: htons htonl ntohs ntohl

5、地址转换函数:

int inet_pton(int family, const char *restrict str, void *restrict add);
            字符串有效返回1,格式无效0,出错-1
const char *inet_ntop(int family, const char *restrict str, void *restrict add);
           出错返回NULL

6、socket函数:

int socket(int family, int type, int protocol);
  TCP: socket(AF_INET, SOCK_STREAM, 0);
  UDP: socket(AF_INET, SOCK_DGRAM, 0);

7、connect函数:

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

8、bind函数:

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

9、listen函数:

int listen(int sockfd, int backlog);

10、accept函数:

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

11、返回套接字本端/对端地址

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

 12、shutdown    howto:SHUT_RD  SHUT_WR  SHUT_RDWR

int shutdown(int sockfd, int howto);

13、

posted @ 2016-03-06 09:33  zhou09  阅读(297)  评论(0编辑  收藏  举报