Thread overview | ||||||||
---|---|---|---|---|---|---|---|---|
|
November 29, 2015 std.socket replacement | ||||
---|---|---|---|---|
| ||||
I was a bit surprised to see that std.socket is deprecated as of 2.069. Just curious, what's wrong with it? And what should I use as a replacement? I know there is vibe.socket, but I don't want to include fullstack web framework as a dependency just to make some HTTP reqests. I also don't see any proposed replacements in a review queue. Will std.socket and std.socketstream be just thrown away? |
November 29, 2015 Re: std.socket replacement | ||||
---|---|---|---|---|
| ||||
Posted in reply to tired_eyes | On Sunday, 29 November 2015 at 08:56:30 UTC, tired_eyes wrote:
> I was a bit surprised to see that std.socket is deprecated as of 2.069. Just curious, what's wrong with it? And what should I use as a replacement? I know there is vibe.socket, but I don't want to include fullstack web framework as a dependency just to make some HTTP reqests.
>
> I also don't see any proposed replacements in a review queue. Will std.socket and std.socketstream be just thrown away?
I would say "WTF" at first, then checked the documentation, but don't see anything
about deprecation. My current whole business relies on that.
|
November 29, 2015 Re: std.socket replacement | ||||
---|---|---|---|---|
| ||||
Posted in reply to tcak | On Sunday, 29 November 2015 at 09:05:37 UTC, tcak wrote:
> On Sunday, 29 November 2015 at 08:56:30 UTC, tired_eyes wrote:
>> I was a bit surprised to see that std.socket is deprecated as of 2.069. Just curious, what's wrong with it? And what should I use as a replacement? I know there is vibe.socket, but I don't want to include fullstack web framework as a dependency just to make some HTTP reqests.
>>
>> I also don't see any proposed replacements in a review queue. Will std.socket and std.socketstream be just thrown away?
>
> I would say "WTF" at first, then checked the documentation, but don't see anything
> about deprecation. My current whole business relies on that.
Wow, sorry, I meant std.stream and std.socketstream, not std.socket and std.socketstream
|
November 29, 2015 Re: std.socket replacement | ||||
---|---|---|---|---|
| ||||
Posted in reply to tired_eyes | On Sunday, 29 November 2015 at 09:12:14 UTC, tired_eyes wrote:
> On Sunday, 29 November 2015 at 09:05:37 UTC, tcak wrote:
>> On Sunday, 29 November 2015 at 08:56:30 UTC, tired_eyes wrote:
>>> I was a bit surprised to see that std.socket is deprecated as of 2.069. Just curious, what's wrong with it? And what should I use as a replacement? I know there is vibe.socket, but I don't want to include fullstack web framework as a dependency just to make some HTTP reqests.
>>>
>>> I also don't see any proposed replacements in a review queue. Will std.socket and std.socketstream be just thrown away?
>>
>> I would say "WTF" at first, then checked the documentation, but don't see anything
>> about deprecation. My current whole business relies on that.
>
> Wow, sorry, I meant std.stream and std.socketstream, not std.socket and std.socketstream
std.stream, and the stream interface in general, is deprecated in favor of ranges, which are more generic and flexible.
|
November 29, 2015 Re: std.socket replacement | ||||
---|---|---|---|---|
| ||||
Posted in reply to Alex Parrill | On Sunday, 29 November 2015 at 16:10:22 UTC, Alex Parrill wrote: > std.stream, and the stream interface in general, is deprecated in favor of ranges, which are more generic and flexible. Could you please give a small example? Consider this minimal app: import std.stdio; import std.socket; import std.socketstream; void main() { auto socket = new TcpSocket(new InternetAddress("dlang.org", 80)); scope(exit) socket.close(); auto ss = new SocketStream(socket); ss.writeString("GET http://dlang.org HTTP/1.1\r\n" "Host: dlang.org\r\n" "Connection: close\r\n" "\r\n"); while (! ss.eof) { writeln(ss.readLine()); } } How should it look with ranges instead of socketstream? I thought I understand ranges in general, but I can't figure out how they can be applied to this case. |
September 04, 2016 Re: std.socket replacement | ||||
---|---|---|---|---|
| ||||
Posted in reply to tired_eyes | On Sunday, 29 November 2015 at 18:00:34 UTC, tired_eyes wrote: > On Sunday, 29 November 2015 at 16:10:22 UTC, Alex Parrill wrote: >> std.stream, and the stream interface in general, is deprecated in favor of ranges, which are more generic and flexible. > > Could you please give a small example? > Consider this minimal app: > > > import std.stdio; > import std.socket; > import std.socketstream; > > void main() { > auto socket = new TcpSocket(new InternetAddress("dlang.org", 80)); > scope(exit) socket.close(); > > auto ss = new SocketStream(socket); > ss.writeString("GET http://dlang.org HTTP/1.1\r\n" > "Host: dlang.org\r\n" > "Connection: close\r\n" > "\r\n"); > > while (! ss.eof) { > writeln(ss.readLine()); > } > } > > > How should it look with ranges instead of socketstream? I thought I understand ranges in general, but I can't figure out how they can be applied to this case. In case someone is still looking for the answer, just like me. It will be something like that: import std.stdio; import std.socket; enum receiveBufferLength = 1024; void main() { auto socket = new TcpSocket(new InternetAddress("dlang.org", 80)); scope(exit) socket.close(); socket.send("GET http://dlang.org HTTP/1.1\r\nHost: dlang.org\r\nConnection: close\r\n\r\n"); string response; char[receiveBufferLength] receiveBuffer; while (true) { auto received = socket.receive(receiveBuffer[0 .. receiveBufferLength]); response ~= receiveBuffer[0 .. received]; if (received == 0) break; } write(response); } |
Copyright © 1999-2021 by the D Language Foundation