网络程序设计D语言
Network Programming D language
我想学习网络编程,所以我上网并开始研究它,我最近发现了这个https://ruslanspivak.com/lsbaws-part1/但是它在python中,我目前正在尝试转换它到 D 语言,所以问题是每次我在我的浏览器上点击 localhost:8888 它只是不 return 任何东西。你能帮我弄清楚它有什么问题吗..
除了 .receive 和 .send 之外,我只是逐行转换了该代码中的所有内容,在 D 语言中它们需要是 ubyte,所以我只是在其中放置了一个 ubyte 缓冲区。
import std.stdio;
import std.socket;
void main()
{
ushort port = 8888;
auto listener = new TcpSocket();
writeln("Listening on port ", port);
listener.blocking = false;
listener.bind(new InternetAddress(port));
listener.listen(1);
ubyte[] data = cast(ubyte[])"HTTP/1.1 200 OK
<html><body>Test Works!!</body></html>";
auto request = new ubyte[1024];
while(true){
listener.accept();
listener.receive(request);
listener.send(data);
listener.close();
}
}
您没有使用 listener.accept()
的 return 值,这是连接到您的客户端。同样对我来说,让它成为非阻塞在一开始就崩溃了。这是按预期工作的固定代码:
import std.stdio;
import std.socket;
void main()
{
ushort port = 3000;
auto listener = new TcpSocket();
writeln("Listening on port ", port);
listener.blocking = true;
listener.bind(new InternetAddress(port));
listener.listen(1);
ubyte[] data = cast(ubyte[])"HTTP/1.1 200 OK
<html><body>Test Works!!</body></html>";
auto request = new ubyte[1024];
while(true){
auto client = listener.accept();
client.receive(request);
client.send(data);
client.close();
}
}
我想学习网络编程,所以我上网并开始研究它,我最近发现了这个https://ruslanspivak.com/lsbaws-part1/但是它在python中,我目前正在尝试转换它到 D 语言,所以问题是每次我在我的浏览器上点击 localhost:8888 它只是不 return 任何东西。你能帮我弄清楚它有什么问题吗..
除了 .receive 和 .send 之外,我只是逐行转换了该代码中的所有内容,在 D 语言中它们需要是 ubyte,所以我只是在其中放置了一个 ubyte 缓冲区。
import std.stdio;
import std.socket;
void main()
{
ushort port = 8888;
auto listener = new TcpSocket();
writeln("Listening on port ", port);
listener.blocking = false;
listener.bind(new InternetAddress(port));
listener.listen(1);
ubyte[] data = cast(ubyte[])"HTTP/1.1 200 OK
<html><body>Test Works!!</body></html>";
auto request = new ubyte[1024];
while(true){
listener.accept();
listener.receive(request);
listener.send(data);
listener.close();
}
}
您没有使用 listener.accept()
的 return 值,这是连接到您的客户端。同样对我来说,让它成为非阻塞在一开始就崩溃了。这是按预期工作的固定代码:
import std.stdio;
import std.socket;
void main()
{
ushort port = 3000;
auto listener = new TcpSocket();
writeln("Listening on port ", port);
listener.blocking = true;
listener.bind(new InternetAddress(port));
listener.listen(1);
ubyte[] data = cast(ubyte[])"HTTP/1.1 200 OK
<html><body>Test Works!!</body></html>";
auto request = new ubyte[1024];
while(true){
auto client = listener.accept();
client.receive(request);
client.send(data);
client.close();
}
}