socket的几个配置函数

int setsockopt(int sockfd, int level, int optname, const void *optval, socklen_t optlen);

sockfd: 标识一个套接口的描述字

level:  选项定义的层次;支持SOL_SOCKETIPPROTO_TCPIPPROTO_IPIPPROTO_IPV6

optname:需设置的选项

optval: 指针,指向存放选项值的缓冲区

optlen: optval缓冲区长度

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


1. 如果在已经处于 ESTABLISHED状态下的socket(一般由端口号和标志符区分)调用closesocket(一般不会立即关闭而经历TIME_WAIT的过程)后想继续重用该socket(程序里不要写close关闭描述符,其实写不写都无所谓,这里设置了可以重用)  以前编程都没设置这个,默认不能重用,所以服务器端只能运行一个,不能多个同时运行;  这个接口可以在系统级别实现负载均衡。

int reuse=1;  默认这个值是0

setsockopt(s,SOL_SOCKET ,SO_REUSEADDR,(const char*)&reuse,sizeof(int));


int getsockname(int sockfd, struct sockaddr *addr, socklen_t *addrlen);
        \ 获取本机socket信息
成功返回0,失败返回-1。


int getpeername(int sockfd, struct sockaddr *addr, socklen_t *addrlen);
        \ 获取accept到的客户端的地址
成功返回0,失败返回-1。


int shutdown(int sockfd, int how);
          \ 关闭读端、写端或者读写端
成功返回0,失败返回-1。

sockfd:  accept 返回的描述符
how:    
      SHUT_RD    关闭读端
      SHUT_WR    关闭写端
      SHUT_RDWR  关闭读写端


原文地址:https://www.cnblogs.com/meihao1203/p/8907448.html