Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[cpIRC] fdopen failed: Bad file descriptor

Ostatnio zmodyfikowano 2012-06-08 16:28
Autor Wiadomość
pawajoro
Temat założony przez niniejszego użytkownika
[cpIRC] fdopen failed: Bad file descriptor
» 2012-06-08 12:40:56
Jest fragment kodu (z biblioteki cpIRC)
C/C++
int IRC::start( char * server, int port, char * nick, char * user, char * name, char * pass )
{
    #ifdef WIN32
    HOSTENT * resolv;
    #else
    hostent * resolv;
    #endif
    sockaddr_in rem;
   
    if( connected )
         return 1;
   
    irc_socket = socket( AF_INET, SOCK_STREAM, IPPROTO_TCP );
    if( irc_socket == INVALID_SOCKET )
    {
        return 1;
    }
    resolv = gethostbyname( server );
    if( !resolv )
    {
        closesocket( irc_socket );
        return 1;
    }
    memcpy( & rem.sin_addr, resolv->h_addr, 4 );
    rem.sin_family = AF_INET;
    rem.sin_port = htons( port );
   
    if( connect( irc_socket,( const sockaddr * ) & rem, sizeof( rem ) ) == SOCKET_ERROR )
    {
        #ifdef WIN32
        printf( "Failed to connect: %d\n", WSAGetLastError() );
        #endif
        closesocket( irc_socket );
        return 1;
    }
   
    dataout = fdopen( irc_socket, "w" ); //tu błąd
    //datain=fdopen(irc_socket, "r");
   
    if( !dataout /*|| !datain*/ )
    {
        fprintf( stderr, "fdopen failed: %s\n", strerror( errno ) );
        closesocket( irc_socket );
        return 1;
    }
   
    connected = true;
   
    cur_nick = new char[ strlen( nick ) + 1 ];
    strcpy( cur_nick, nick );
   
    fprintf( dataout, "PASS %s\r\n", pass );
    fprintf( dataout, "NICK %s\r\n", nick );
    fprintf( dataout, "USER %s * 0 :%s\r\n", user, name );
    fflush( dataout );
   
    return 0;
}
}
Program kompiluje się normalnie, jednakże program mi wyrzuca:
fdopen failed: Bad file descriptor
Co robić?
P-58087
DejaVu
» 2012-06-08 15:47:10
P-58097
pawajoro
Temat założony przez niniejszego użytkownika
» 2012-06-08 16:28:36
Czy będzie tu stosowane zastosowanie send() zamiast fprintf() ?
P-58100
« 1 »
  Strona 1 z 1