recv就是去套接字读缓冲区读数据
阻塞模式下:读缓冲区没数据那就阻塞等待,若等待被打断返回-1设置errno为EINTR
非阻塞模式下:读缓冲区没数据那就返回-1,设置errno为EAGAIN或EWOULDBLOCK。
若连接断开返回0,读取成功返回读取数据字节数
send就是去套接字写缓冲区写数据
阻塞模式下:写缓冲区满了那就阻塞等待,若等待被打断返回-1设置errno为EINTR
非阻塞模式下:写缓冲区满了那就返回-1,设置errno为EAGAIN或EWOULDBLOCK。
若连接断开返回0,写成功返回写的数据字节数
int setsockopt(int sockfd, int level, int optname, const void *optval, socklen_t optlen);
level设为SOL_SOCKET,表示设置的是套接字层
optname设为SO_REUSEADDR或SO_REUSEPORT
这都没问题,我想说的是
设置地址复用要在bind前,这样绑定的时候才能复用已经被占用的地址