我在 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() 之后,因此我的假设。
还是我在叫错树?