C插座连接错误关闭插座



这是代码

    tcp_sockfd = socket(AF_INET , SOCK_STREAM , 0);
    if (tcp_sockfd == -1) {
        printf("Could not create socket");
        return 1;                                                                                                                                           
    }
    if (connect(tcp_sockfd , (struct sockaddr *)&config->tcp_srvaddr , sizeof(config->tcp_srvaddr)) < 0) {
        printf("connect failed. return 1n");
        return 1;
    }
    struct timeval tv = {30, 0};
    setsockopt(tcp_sockfd, SOL_SOCKET, SO_RCVTIMEO, (struct timeval *)&tv, sizeof(struct timeval));
    if(send(tcp_sockfd , data , len , 0) < 0) {
        printf("send failed.n");    
        return 1;
    }
    printf("Send completen");
    close(tcp_sockfd);

如果插座发送或连接失败,我是否关闭套接字?或者如果错误clacket auto关闭?

插座永远不会单独关闭。完成套接字后,您需要致电close以发布描述符。

请注意,无论连接本身是否打开,套接字作为连接的手柄保持打开状态。关闭连接(例如,使用shutdown或另一侧启动(不会关闭套接字。

最新更新