if (getsockopt(sockfd, SOL_SOCKET, SO_ERROR, &error, &len) < 0) { // 错误处理 } else { if (error != 0) { // 连接失败 } else { // 连接成功 } } 在这个示例中,我们首先定义了一个用于存储错误代码的变量error,然后调用getsockopt来获取SO_ERROR选项的值。如果error不为 0,则表示连接过程...
if((sockfd=socket(AF_INET,SOCK_STREAM,0))==-1){ perror("套接字创建失败!\n"); exit(1); } //设置套接字的属性使它能够在计算机重启的时候可以再次使用套接字的端口和IP int err,sock_reuse=1; err=setsockopt(sockfd,SOL_SOCKET,SO_REUSEADDR,(char *)&sock_reuse,sizeof(sock_reuse)); if(...
int getsockname(int sockfd, struct sockaddr *localaddr,socklen_t *addrlen); getsockname可以获得一个与socket相关的地址。 服务器端可以通过它得到相关客户端地址。 而客户端也可以得到当前已连接成功的socket的ip和端口。 对于TCP连接的情况,如果不进行bind指定IP和端口,那么调用connect连接成功后, 使用getsockname...
sockfd:一个标识套接口的描述字。level:选项定义的层次。支持的层次仅有SOL_SOCKET和IPPROTO_TCP。optname:需获取的套接口选项。optval:指针,指向存放所获得选项值的缓冲区。optlen:指针,指向optval缓冲区的长度值。 若无错误发生,getsockopt()返回0。否则的话,返回SOCKET_ERROR错误,应用程序可通过...
SO_SNDTIMEO 获取发送超时时间 option_value:获取到的选项的值 option_len:value的长度 返回值: 成功:0失败:-1intgetsockname(intsockfd, struct sockaddr *localaddr,socklen_t *addrlen); getsockname可以获得一个与socket相关的地址。 服务器端可以通过它得到相关客户端地址。
1)SOL_SOCKET:通用套接字选项. 2)IPPROTO_IP:IP选项. 3)IPPROTO_TCP:TCP选项. RETURN VALUE 返回值 On success, zero is returned. On error, -1 is returned, and errno is set appropriately. 错误返回 ERRORS EBADF The argument sockfd is not a valid descriptor. ...
getsockopt函数用于获取socket选项的值。其中,可以使用SO_ERROR选项来获取socket连接的错误码,从而判断连接状态。 下面是一个例子: #include <stdio.h> #include <sys/types.h> #include <sys/socket.h> int main() { int sockfd; int error; socklen_t len = sizeof(error); // 创建socket sockfd = ...
SO_RCVTIMEO 获取接收超时时间 SO_SNDTIMEO 获取发送超时时间 option_value:获取到的选项的值 option_len:value的长度 返回值: 成功:0失败:-1intgetsockname(intsockfd,structsockaddr*localaddr,socklen_t*addrlen);getsockname可以获得一个与socket相关的地址。
{"SO_ERROR",SOL_SOCKET,SO_ERROR,sock_str_int}, {"SO_KEEPALIVE",SOL_SOCKET,SO_KEEPALIVE,sock_str_flag}, {"SO_LINGER",SOL_SOCKET,SO_LINGER,sock_str_linger}, {"SO_OOBINLINE",SOL_SOCKET,SO_OOBINLINE,sock_str_flag}, {"SO_RCVBUF",SOL_SOCKET,SO_RCVBUF,sock_str_int}, ...