Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    SOCKET: Server Concorrente In C

    Ho scritto un server Iterattivo in C è vorrei renderlo concorrente. Non voglio usare fork o altre funzioni specifiche per linux perchè voglio portabilità.

    INDRIZIZZO DEI MIEI SORGENTI:

    http://wbn.ath.cx/SOCKET/CS/TXT/mysocket.c.txt
    http://wbn.ath.cx/SOCKET/CS/TXT/mysocket.h.txt
    http://wbn.ath.cx/SOCKET/CS/TXT/server.c.txt
    http://wbn.ath.cx/SOCKET/CS/TXT/client.c.txt

    Ho usato la chiamata BIND anche nel client perchè lo scopo finale e di avere un unico programma che funga sia da client che da server in modo tale da mettersi inizialmente in attesa di richieste di connessione e sucessivamente poter richiedere una connessione tramite input dal terminale.

    Il client fa una scansione continua dell'imput da terminale
    se la stringa e "/close" chiude la connessione altrimenti la invia. Potrei dunque fare in modo che tramite la stringa "/connect remoteIP remotePORT" richieda una connessione.
    Ora cmq il problema principale sta nel server.

    GRAZIE

  2. #2
    SE LE PAGINE DEI SORGENTI NON SONO RAGGIUNGIBILI SIGNIFICA CHE IO NON SONO ONLINE.

    Quei sorgenti stanno sul mio PC. Generalmente sto dal primo pomeriggio sino alla notte tardi. Appena accendo il PC aggiorno il mio host registrato su dyndns.org affinchè il mio server sia raggiungibile. Quindi se non sono raggiungibili provate un secondo momento.

    GRAZIE

    ciao

  3. #3
    Vorrei che il mio fosse un server concorrente single-process.


    QEUSTO E' UN ALGORITMO DI UN SERVER CONCORRENTE A PROCESSO SINGOLO:

    int main() {

    create a socket
    bind to a well-known port
    while ( 1 ) {
    use select to wait for I/O
    if ( original socket is ready ) {
    accept a new connection and add to read list
    }
    else if ( a socket is ready for read ) {
    read data from a client
    if ( data completes a request ) {
    do the request
    if ( reply needed )
    add socket to write list
    }
    }
    else if ( a socket is ready for write ) {
    write data to a client
    if ( message is complete ) {
    remove socket from write list
    }
    else {
    adjust write parameters leave in write list
    }
    }
    }
    }

    Ma non sono riuscito a cavarne piede

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.