函数原型: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);int inet_pton(int af, const char *src, void *dst);
inet_pton() returns 1 on success (network address was successfully converted). 0 is returned if src does not contain a character string representing a valid network address in the specified address family. If af does not contain a valid address family, -1 is returned and errno is set to EAFNOSUPPORT.参数类型:/* Internet address. */typedef uint32_t in_addr_t;struct in_addr{ in_addr_t s_addr;};
套接字的默认状态是阻塞的,这就意味着当发出一个不能立即完成的套接字调用时,其进程将被投入睡眠,等待响应操作完成,可能阻塞的套接字调用可分为以下四类:
(1) 输入操作,包括read,readv,recv,recvfrom,recvmsg;
(2) 输出操作,包括write,writev,send,sendto,sendmsg;
(3) 接受外来连接,即accept函数,在listen后从连接队列中取出已完成的连接;
(4) 发起外出连接,即tcp的connect函数;
以上是通用行为操作
bind:socket的addr和端口绑定操作,功能同对sockfd的成员参数单独赋值
listen:服务端监听操作,做一个连接监听状态的启动动作,可配置最大连接数,启动后立刻返回
select对套接字IO设置非阻塞的超时,返回:负数-执行出错;0:超时或者没有IO变化;正数:发生读写的套接字变化
fcntl获取和设置套接字IO属性
getsockopt(sockfd,SOL_SOCKET【套接字级别level,linux下的SOL_SOCKET簇】,SO_ERROR【选项】,&value【选项值】,&len_of_value【值结构体长度】)获取套接字某选项下的参数值
setsockopt()设置套接字某选项下的参数值
WIN32下传入时间参数为int类型单位ms
setsockopt(s, SOL_SOCKET, SO_SNDTIMEO, (char *)&time_out_ms, sizeof(int));
setsockopt(s, SOL_SOCKET, SO_RCVTIMEO, (char *)&time_out_ms, sizeof(int));
LINUX下传入时间参数为struct timeval类型tm.sec=xx;tm.u_sec=xx
setsockopt(s, SOL_SOCKET, SO_SNDTIMEO, (char *)&tm, sizeof(struct timeval));
setsockopt(s, SOL_SOCKET, SO_RCVTIMEO, (char *)&tm, sizeof(struct timeval));