TCP/IP Sockets-1

来源:互联网 发布:张作霖 知乎 编辑:程序博客网 时间:2024/04/28 04:40

TCP/IP Sockets-1

TCP-IPv4

创建和销毁套接字

创建套接字

    int socket(int domain,int type,int protocol)

参数

  • domin:通信领域,常用参数:IPv4—AF_INET和IPv6—AF_INET6
  • type:套接字类型,常用参数:可靠字节流语义—SOCK_STREAM,“尽力而为”—OCK_DGRAM
  • protocol:指定特定的端到端协议:TCP—IPPROTO_TCP,UDP—IPPROTO_UDP

返回值
返回通信实例句柄,非负值表示成功,-1表示失败

关闭套接字

    int close(int socket)

参数

通信实例句柄

返回值

失败返回-1,成功返回0

指定地址

通用地址

    struct sockaddr    {        sa_family_t sa_family; //地址族        char sa_data[14]; //地址信息    }

IPv4地址

struct in_addr{    uint32_t s_addr;    //Internet address(32 bit)}struct sockaddr_in{    sa_family_t sin_family;    //地址族    in_port_t sin_port;     //端口    struct in_addr sin_addr;    //32位地址    char sin_zero[8];   //没用}

IPv6地址

struct in6_addr{    unint32_t s_addr[16];}struct sockaddr_in6{    sa_family_t sin6_family;    //地址族    in_port_t sin6_port;    //端口    uint32_t sin6_flowinfol;    //流信息    struct in6_addr sin6_addr;    //地址信息    uint32_t sin6_scope_id;     //范围标识符   }

二进制/字符串地址转换

    int inet_porn(int addressFamily,const char* src,void *dst)

参数

  • addressFamily:地址族
  • src:输入字符串(地址)地址
  • dst:输出结果地址

返回值

指定的地址族未知,返回-1,格式化未能成功返回0

    const char* inet_ntop(int addressFamily,const void* src,char * dst,socklen_t dstBytes)

参数

  • addressFamily:地址族
  • src:原地址(地址大小有地址族确定)
  • dst:目的地址
  • dstBytes:目的地址空间大小

返回值

如果返回值返回为NULL则转换失败,否则转换为目的地址

获取套接字的关联地址

int getpeername(int socket,struct sockaddr* remoteAddress,socklen_t* addressLength)int getsockname(int socket,struct sockdaddr* localAddress,socklen_t* addressLength)

作用

getpeername():获取套接字关联的外部地址

getsockname():获取套接字关联的本地地址

参数

  • socket:套接字的句柄
  • localAddress/remoteAddress:地址存放的地址空间
  • addressLength:地址空间的长度

链接套接字

    int connet(int socket,const struct sockaddr* foreignAddress,socklen_t addressLength)

参数

  • socket:套接字的句柄
  • foreignAddress:目的地址地址结构
  • addressLength:结构长度

绑定到地址

    int blind(int socket,struct sockaddr* localAddress,socklen_t addresssize)

参数

  • socket:套接字的句柄
  • localAddress:本地地址地址结构
  • addressLength:结构长度

处理进入的链接

    int listen(int socket,int queueLimit)

参数

  • socket:套接字的句柄
  • queueLimiet:等待进入链接数量的上限

返回值
成功返回0,失败返回-1

    int accept(int socket,struct sockadd*)  
0 0
原创粉丝点击