On Friday, 25 May 2012 at 20:50:25 UTC, Donald Duvall wrote:
On Wednesday, 23 May 2012 at 19:24:53 UTC, Jarl André wrote:
On Wednesday, 23 May 2012 at 13:39:09 UTC, Jarl André wrote:
On Saturday, 19 May 2012 at 20:33:49 UTC, Nathan M. Swan
wrote:
On Friday, 18 May 2012 at 06:35:59 UTC, Jarl André wrote:
I am a Java developer who is tired of java.nio and similar
complex socket libraries.
In Java you got QuickServer, the ultimate protocol creation
centered socket library. You don't have to write any
channels and readers and what not. You just instantiate a
server, configures the handlers (fill in classes that
extends a handler interface) and there you go.
Shouldn't there exist a similar library in any programming
language? Not doing so is assuming that developers always
need control of the lower layers. Its not true. I care
about protocol. Not sockets.
Is there any abstraction layers in phobos? Or is everything
just as complex as before?
Check out arsd:
https://github.com/adamdruppe/misc-stuff-including-D-programming-language-web-stuff
I used cgi.d to make my own server easily (compile with
-version=embedded_httpd). If you want more lower-level
control, try a ListeningConnectionManager. To see how it's
used, look at the code starting on line #1926.
It has some pitfalls (e.g. I can't find a good way to stop
the server), but it is very nice in _easily_ starting up,
with _zero_ config.
NMS
Thanks. It looks like a good option.
As it turns out I am very interested in having complete
control of what type of service I am creating, so a library
limiting me in some ways are not an option. On the other
hand, I have investigated the listener example and have found
out that I needed to generalize it a bit. Make a few
interfaces, some implementations and my initial goal is to
have end user code look excactly like QuickServers in Java.
Why? Because sometimes you need simple command servers, lets
say for polling an email or checking hardware status on a
server and report it back, not worrying about blocking and
async or whatever about sockets.
Another great advantage of making a "QuickServer" library is
that its inner content can be replaced in the future without
the end users knowing about. I have come far in the library
making, but need some help understanding std.socket:
1.a. What is SocketSet and why do I need to pass it to
Socket.select?
1.b. I only want to accept new sockets and I think its too
much code for that
Even if questions is stupid please comment/correct me.
And here it comes:
https://github.com/jarlah/d2-simple-socket-server
This is my object oriented contribution to the problem.
Based on closed/open principe, in that expansion is done by
adding new classes and not modifying the existing code.
Comments are appreciated.
Would it be possible for someone to write some documentation on
this socket server and make it windows compatible?
I am just learning D and coming from C# sockets this is much
different and I understand it completely. I would much
appreciate any help with understanding sockets in D and any
pointers in the right direction.
Sorry for the typo: I do NOT understand it completely.