`
oolala
  • 浏览: 99461 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
09c341db-7f05-3f2b-a572-9ee69a5d8a77
unix环境高级编程
浏览量:21586
社区版块
存档分类
最新评论

UNIX网络编程卷一:3 套接字编程简介

 
阅读更多
1、套接字地址结构
    ipv4套接字地址结构
    <netinet/in.h>
    struct in_addr
    struct sockaddr_in
 
 
2、通用套接字地址结构
    <sys/socket.h>
    struct sockaddr
 
3、值-结果参数
    从进程到内核传递套接字地址结构的函数有3个:bind、connect、sendto
    从内核到进程传递套接字地址结构的函数有4个:accept、recvfrom、getsockname、getpeername
 
 
4、字节序排序函数
    一个16位整数,它由2个字节组成,内存中存储这二个字节有二种方法:一种是将低序字节存储在起始地址,这称为小端字节序
    另一种方法是将高序字节存储在起始地址,这称为大端字节序。
    
       #include <arpa/inet.h>
 
       uint32_t htonl(uint32_t hostlong);
 
       uint16_t htons(uint16_t hostshort);
 
       uint32_t ntohl(uint32_t netlong);
 
       uint16_t ntohs(uint16_t netshort);
 
5、字节操纵函数
    名字以b开头的一组函数起源于BSD
    bzero
    bcopy
    bcmp
 
    ANSI C函数
    memset
    memcpy
    memcmp
 
6、inet_aton  inet_addr  inet_ntoa
    下列函数在点分十进制数串(101.168.112.96)与它长度为13位的网络字节序二进制间转换IPV4地址
 
       #include <sys/socket.h>
       #include <netinet/in.h>
       #include <arpa/inet.h>
 
       int inet_aton(const char *cp, struct in_addr *inp);
 
       in_addr_t inet_addr(const char *cp);
 
       in_addr_t inet_network(const char *cp);
 
       char *inet_ntoa(struct in_addr in);
 
       struct in_addr inet_makeaddr(int net, int host);
 
       in_addr_t inet_lnaof(struct in_addr in);
 
       in_addr_t inet_netof(struct in_addr in);
inet_aton将cp所指的字符串转换成一个32位的网络字节序二进制值。
inet_ntoa 函数将一个32位的网络字节序二进制ipv4地址转换成相应的点分十进制数串。
 

7、inet_pton   inet_ntop
       #include <arpa/inet.h>
 
       int inet_pton(int af, const char *src, void *dst);
       const char *inet_ntop(int af, const void *src,
                             char *dst, socklen_t size);
 
8、readn writen readline
    字节流套接字上的read和write函数所表现的行为不同于通常的文件IO。字节流套接字上调用read或write输入或输出的字节数可能比请求的数量少,然而这不是出错的状态。这个现象的原因在于内核中用于套接字的缓冲区可能已达到了极限。此时所需的是调用者再次调用read或write函数,以输入或输出剩余字节。
 
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics