socket总结

函数原型: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));

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值