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前,這樣綁定的時候才能復用已經被占用的地址