Dに次のプリミティブサーバーがあります:
import std.stdio;
import std.socket;
int main() {
const int port = 8080;
InternetAddress addr = new InternetAddress(InternetAddress.ADDR_ANY, port);
TcpSocket server = new TcpSocket(AddressFamily.INET);
server.bind(addr);
server.listen(10);
for(;;) {
Socket newclient = server.accept();
newclient.send("HTTP/1.1 200 OK\r\n");
newclient.send("Content-type: text/html\n\n");
newclient.send("Hi from D!");
newclient.shutdown(SocketShutdown.BOTH);
newclient.close();
}
return 0;
}
ブラウザで接続しても「Hi From D!」が表示されず、そのまま切断されてしまいます。
私の仮定は、 send() がデータをバッファリングし、そのバッファをフラッシュする必要があるということです。しかし、私はあなたがそれを行う方法を理解していません。興味深いことに、writefln("asdf asdf\n"); を使用して STDOUT にデータを書き込むと、コードは機能します。send() の最後の呼び出しの後、したがって私の仮定。
それとも、間違った木を吠えていますか?