Tom*_*mas 2 sockets networking webserver d
我想学习网络编程,所以我上网并开始研究它,我最近发现这个https://ruslanspivak.com/lsbaws-part1/但它是在python中,我目前正在尝试将其转换为D语言,所以问题是每次我点击localhost:8888在我的浏览器上它只是不返回任何东西.你能帮我弄清楚它有什么问题吗?
我刚刚从该代码中逐行转换了所有内容,除了.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();
}
}
Run Code Online (Sandbox Code Playgroud)
您不使用返回值listener.accept(),即连接到您的客户端.另外对我来说,非阻塞在开始时就崩溃了.这是固定代码,它按预期工作:
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();
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
613 次 |
| 最近记录: |