English version
Accueil     À propos     Téléchargement     Ressources     Contactez-nous    

Ce site est rarement mis à jour. Pour les informations les plus récentes, rendez-vous sur le nouveau site OCaml à l'adresse ocaml.org.

Browse thread
[Caml-list] High level (asynchronous) networking library?
[ Home ] [ Index: by date | by threads ]
[ Search: ]

[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: 2001-07-12 (05:31)
From: Jeremy Fincher <tweedgeezer@h...>
Subject: [Caml-list] High level (asynchronous) networking library?
I've been learning O'Caml for the past little bit, and after not finding any 
high level asynchronous networking libraries (that is, libraries/modules for 
writing high performance network servers), I figured I would write one, 
since it seemed a non-trivial problem that wasn't too far out of my league.

Anyway, I've been looking at possible ways to write one.  In Python, I've 
made quite a bit of use of the "asyncore" module 
(http://www.nightmare.org/medusa/index.html), which is a very production 
proven (it's the asynchronous networking engine used in Zope) and simple 
framework for writing high performance asynchronous servers.  It seems that 
implementing asyncore in O'Caml would be fairly straightforward, so I've 
been putting it off a bit while I search for a possibly better solution.

Someone has written "asyncore turned inside out" using Stackless Python, an 
implementation of Python that has first-class continuations) using 
continuations to implement the apparent multi-tasking.  It apparently (I've 
not used it myself) makes the asynchronous networking part of the coding a 
little more transparent to the user than asyncore does.  I'm curious if 
something similar could be implemented in O'Caml with closures, and if it 
could achieve similar user-transparency.

Does anyone have any comments on any of the above options?  Are there other 
options I'm not considering which could be better?  Are there any 
implementations of what I want already?  What I'm looking for is as much 
abstraction away from the low-level socket/select loops as is reasonable for 
efficiency's sake.

Get your FREE download of MSN Explorer at http://explorer.msn.com

Bug reports: http://caml.inria.fr/bin/caml-bugs  FAQ: http://caml.inria.fr/FAQ/
To unsubscribe, mail caml-list-request@inria.fr  Archives: http://caml.inria.fr