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

[WinSock] problem z funkcja accept

Ostatnio zmodyfikowano 2012-06-05 23:00
Autor Wiadomość
yoogi
Temat założony przez niniejszego użytkownika
[WinSock] problem z funkcja accept
» 2012-06-03 22:24:57
Witam, mam pewien problem którego nie potrafię rozwiązać, a mianowicie pokaże kod, tak będzie lepiej :)

error:

...
accept: Bad file descriptor
accept: Bad file descriptor
accept: Bad file descriptor
accept: Bad file descriptor
...

code:
C/C++
while( true )
{
    sin_size = sizeof( struct sockaddr_in );
    if(( new_fd = accept( sockfd,( struct sockaddr * ) & their_addr,( unsigned int * ) & sin_size ) ) == - 1 )
    {
        perror( "accept" );
        continue;
    }
    if( !fork() )
    {
        close( sockfd );
C/C++
if( ch == 2 )
{
    printf( "%s>", inet_ntoa( their_addr.sin_addr ) );
    string tkCmd;
    getline( cin, tkCmd );
   
    if( tkCmd == "connect" )
    {
        vector < string > vc = tkGetLine( 5 ); //moja funkcja
        if( send( new_fd, tkCmd.c_str(), strlen( tkCmd.c_str() ), 0 ) == - 1 )
             perror( "send" );
       
        close( new_fd );
        for( int i = 0; i < vc.size(); i++ )
        {
            sin_size = sizeof( struct sockaddr_in );
            if(( new_fd = accept( sockfd,( struct sockaddr * ) & their_addr,( unsigned int * ) & sin_size ) ) == - 1 )
            {
                perror( "accept" );
                continue;
            }
            if( send( new_fd, vc[ i ].c_str(), strlen( vc[ i ].c_str() ), 0 ) == - 1 )
                 perror( "send" );
           
            close( new_fd );
        }
    }
}


P-57779
DejaVu
» 2012-06-05 19:10:28
P-57911
yoogi
Temat założony przez niniejszego użytkownika
» 2012-06-05 22:08:33
Mam rozumieć, że WinSock pod systemu Unixowe jest "inny" niż pod Microsoftowe ?
P-57933
DejaVu
» 2012-06-05 22:50:40
API jest praktycznie rzecz biorąc jednakowe dla Unixa jak i Windowsa.
P-57939
yoogi
Temat założony przez niniejszego użytkownika
» 2012-06-05 23:00:59
Pod Windowsem nie ma dla przykładu funkcji perror, lub pod Unixem się zamyka gniazda za pomocą funkcji close, a pod Windowsem za closesocket. Jest nieco różnic
P-57940
« 1 »
  Strona 1 z 1