socketプログラミングのよくある問題ノート


  • socketを非ブロックIO
  • に設定する方法
        int listenfd = socket(PF_INET, SOCK_STREAM, 0); 
        int fdflag = fnctl(listenfd, F_GETFL);
        if( fcntl(listenfd, F_SETFL, fdflag | O_NONBLOCK) == -1) 
        {   
            close(listenfd);
            perror("set listenfd to non-block error");
        }  
    2.  bind error
        2.1 bind 0.0.0.0 ( ip),127.0.0.1 (lo, ),192.168.x.x( ); bind bind error。
       2.2  time wait bind bind error, socket REUSEADDR 。
    
        const int reuseaddr_flag = 1;
        if ( setsockopt(listenfd, SOL_SOCKET, SO_REUSEADDR, &reuseaddr_flag, sizeof(int)) == -1 )
        {   
            close(listenfd);
            perror("set socket option SO_REUSEADDR fail");
        }