Domanda

Mi piacerebbe sapere se qualcosa del genere è stato fatto prima:

Di recente ho iniziato a lavorare su una libreria di networking in C. La libreria mantiene una serie di prese, ognuna delle quali è associata a due flussi di byte FIFO, input e output.

Si prevede che uno sviluppatore che utilizza la libreria registrerà alcuni callback, costituiti da una funzione di riconoscimento e una funzione di gestore. Se arrivano nuovi dati su una presa (cioè il flusso di input), viene chiamato ogni riconoscimento. Se uno dei riconosciuto trova una parte corrispondente di dati, viene chiamato il suo gestore associato, consumando i dati e possibilmente mettendo in coda nuovi dati sul flusso di output della presa, programmata per essere trasmessa in seguito.

Ecco un esempio per chiarire come viene utilizzata la biblioteca:

// create client socket
client = nc_create(NC_CLIENT);

// register some callback functions that you'll have to supply yourself
nc_register_callback(client, &is_login, &on_login);
nc_register_callback(client, &is_password, &on_password);

// connect to server
nc_dial(client, "www.google.com", "23");

// start main loop (we might as well have more than one connection here)
nc_talk();

Per me, questo è il modo più ovvio per scrivere una biblioteca di networking generale in C. Ho fatto alcune ricerche usando Google, ma non sono stato in grado di trovare qualcosa di simile scritto in C. ma è difficile credere che io sia il primo che implementa questo approccio.

Esistono altre librerie di rete C di scopo generale basate sui dati come questa?
Li useresti?

Nessuna soluzione corretta

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top