TCP/IP Sockets-1
TCP-IPv4
创建和销毁套接字
创建套接字
int socket(int domain,int type,int protocol)
参数
domin:通信领域,常用参数:IPv4—AF_INET和IPv6—AF_INET6type:套接字类型,常用参数:可靠字节流语义—SOCK_STREAM,“尽力而为”—OCK_DGRAMprotocol:指定特定的端到端协议: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*)
TCP/IP Socket编程
本文介绍TCP/IP Sockets的基础知识,包括如何创建和销毁套接字、设置地址、进行连接及绑定等操作。同时,还详细解释了不同类型的套接字及其参数配置。

3057

被折叠的 条评论
为什么被折叠?



