(Phobos - SocketStream) Am I doing something wrong or is this a bug?
Zane
zane.sims at gmail.com
Tue Nov 3 13:12:52 PST 2009
While trying to learn sockets in Phobos, I ran into a problem. I was trying to download the google logo via an HTTP GET. when I do a socketStream.read, the returned "bytes read" value indicates that less bytes were read in than were available (4097 bytes to be exact). The google logo is 8558 bytes in size as indicated by the HTTP headers received. Here is my code:
module HttpManager;
import std.stream;
import std.stdio;
import std.socket;
import std.socketstream;
import std.string;
int main()
{
char[] line;
ubyte[] data = new ubyte[8558];
uint num = 0;
TcpSocket socket = new TcpSocket(new InternetAddress("www.google.com", 80));
socket.send("GET /intl/en_ALL/images/logo.gif HTTP/1.0\r\n\r\n");
SocketStream socketStream = new SocketStream(socket);
while(!socketStream.eof)
{
line = socketStream.readLine();
if (line=="")
break;
writef("%s\n", line);
}
num = socketStream.read(data);
writef("\n\nNum: %d\n\n", num);
socketStream.close;
socket.close;
File file = new File("logo.gif", FileMode.Out);
file.write(data);
file.close;
return 0;
}
The console output is:
HTTP/1.1 200 OK
Content-Type: image/gif
Last-Modified: Wed, 07 Jun 2006 19:38:24 GMT
Date: Tue, 03 Nov 2009 13:04:57 GMT
Expires: Wed, 03 Nov 2010 13:04:57 GMT
X-Content-Type-Options: nosniff
Server: gws
Content-Length: 8558
Cache-Control: public, max-age=31536000
Age: 28322
X-XSS-Protection: 0
Num: 4097
I am using dmd v1.050 with dsss v0.78
Sorry if this is a stupid question. Any help would be very appreciated :)
Thanks,
Zane
More information about the Digitalmars-d
mailing list