Zamiana kodu linoxowskiego na windowskowski

0

mam jakiś tam kod:

 #include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>

#define PORT 9034   // port, na którym nas³uchujemy

int main( void )
{
    fd_set master; // g³ówna lista deskryptorów plików
    fd_set read_fds; // pomocnicza lista deskryptorów dla select()
    struct sockaddr_in myaddr; // adres serwera
    struct sockaddr_in remoteaddr; // adres klienta
    int fdmax; // maksymalny numer deskryptora pliku
    int listener; // deskryptor gniazda nas³uchuj¹cego
    int newfd; // nowozaakceptowany deskryptor gniazda
    char buf[ 256 ]; // bufor na dane pochodz¹ce od klienta
    int nbytes;
    char yes = 1; // dla setsockopt() SO_REUSEADDR, patrz ni¿ej
    int addrlen;
    int i, j;

    FD_ZERO( & master ); // wyczyœæ g³ówny i pomocniczy zestaw
    FD_ZERO( & read_fds );

    // utwórz gniazdo nas³uchuj¹ceo
    if(( listener = socket( AF_INET, SOCK_STREAM, 0 ) ) == - 1 ) {
        perror( "socket" );
        exit( 1 );
    }

    // zgub wkurzaj¹cy komunikat b³êdu "address already in use"
    if( setsockopt( listener, SOL_SOCKET, SO_REUSEADDR, &yes,
    sizeof( int ) ) == - 1 )
    {
        perror( "setsockopt" );
        exit( 1 );
    }

    // bind
    myaddr.sin_family = AF_INET;
    myaddr.sin_addr.s_addr = INADDR_ANY;
    myaddr.sin_port = htons( PORT );
    memset( &( myaddr.sin_zero ), '\0', 8 );
    if( bind( listener,( struct sockaddr * ) & myaddr, sizeof( myaddr ) ) == - 1 ) {
        perror( "bind" );
        exit( 1 );
    }

    // listen
    if( listen( listener, 10 ) == - 1 ) {
        perror( "listen" );
        exit( 1 );
    }

    // dodaj gniazdo nas³uchuj¹ce do g³ównego zestawu
    FD_SET( listener, & master );

    // œledŸ najwy¿szy numer deskryptora pliku
    fdmax = listener; // póki co, ten jest najwiêkszy

    // pêtla g³ówna
    for(;; ) {
        read_fds = master; // copy it
        if( select( fdmax + 1, & read_fds, NULL, NULL, NULL ) == - 1 ) {
            perror( "select" );
            exit( 1 );
        }

        // przejdŸ przez obecne po³¹czenia szukaj¹c danych do odczytania
        for( i = 0; i <= fdmax; i++ ) {
            if( FD_ISSET( i, & read_fds ) ) { // mamy jednego!!
                if( i == listener ) {
                    // obs³u¿ nowe po³¹czenie
                    addrlen = sizeof( remoteaddr );
                    if(( newfd = accept( listener,( struct sockaddr * ) & remoteaddr,
                    & addrlen ) ) == - 1 ) {
                        perror( "accept" );
                    } else {
                        FD_SET( newfd, & master ); // dodaj do g³ównego zestawu
                        if( newfd > fdmax ) { // œledŸ maksymalny
                            fdmax = newfd;
                        }
                        printf( "selectserver: new connection from %s on "
                        "socket %d\n", inet_ntoa( remoteaddr.sin_addr ), newfd );
                    }
                } else {
                    // obs³u¿ dane od klienta
                    if(( nbytes = recv( i, buf, sizeof( buf ), 0 ) ) <= 0 ) {
                        // b³¹d lub po³¹czenie zosta³o zerwane
                        if( nbytes == 0 ) {
                            // po³¹czenie zerwera
                            printf( "selectserver: socket %d hung up\n", i );
                        } else {
                            perror( "recv" );
                        }
                        close( i ); // papa!
                        FD_CLR( i, & master ); // usuñ z g³ównego zestawu
                    } else {
                        // mamy trochê danych od klienta
                        for( j = 0; j <= fdmax; j++ ) {
                            // wyœlij do wszystkich!
                            if( FD_ISSET( j, & master ) ) {
                                // oprócz nas i gniazda nas³uchuj¹cego
                                if( j != listener && j != i ) {
                                    if( send( j, buf, nbytes, 0 ) == - 1 ) {
                                        perror( "send" );
                                    }
                                }
                            }
                        }
                    }
                } // jakie to BRZYDKIE!!
            }
        }
    }

    return 0;
}
 

i tak to krzyczy, że nie mam biblioteki a jak zamiast

 #include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h> 

dam

 #include <winsock2.h> 

to wywala z kolei błędy w kodzie(bo to inna biblioteka...) pomorze ktoś to "przepisać" poprawnie? Przy okazji morze podrzucę link do mojej gierki jak ktoś mi powie jak wrzucić :)

0

To jest linuxowy kod.

0

pomorze ktoś? błagam

1 użytkowników online, w tym zalogowanych: 0, gości: 1