www.digitalmars.com         C & C++   DMDScript  

digitalmars.D - Socket + Thread - any working example??

Hello, guys!
Still fighting with my server example and cannot catch what's wrong. Just
simple example:
import std.stdio;
import std.socket;
import core.thread;

int main(){
    auto srv = new TcpSocket;
    srv.bind(new InternetAddress(1000));
    writefln("Listen on port 1000");

    for(Socket cli = srv.accept(); srv.isAlive(); cli = srv.accept()){
        auto t = new ServiceClientThread(cli);

    return 0;

class ServiceClientThread : Thread
    this(Socket remote){
        cli = remote;

    Socket cli;

    void run()
After first client connects to the server, it receives (as expected) 'hello!'
line, but after this server dies, his output:

Listen on port 1000
std.socket.SocketAcceptException: Unable to accept socket connection

I.e. second call to 'accept' kills server. WHY? Can somebody help me, please?
Any working example (in my configuration)?
(dmd 2.046, Phobos)
Jun 01 2010