您的位置:首页 > 理论基础 > 计算机网络

TCP/IP Sockets-1

2016-09-18 19:17 423 查看

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*)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: