test-tcp.nut 939 B

123456789101112131415161718192021222324252627282930313233343536
  1. function download(host, file, extra_header=null){
  2. local sock = socket.tcp();
  3. sock.connect(host, 80);
  4. local info = sock.getpeername()
  5. print(info.address, info.port);
  6. //sock.settimeout(1, "t");
  7. local count = 0; // counts number of bytes read
  8. local req = "GET " + file + " HTTP/1.1\r\nHost: " + host + "\r\n";
  9. if (extra_header) req += extra_header + "\r\n";
  10. req += "\r\n";
  11. print(req, req.len());
  12. sock.send(req);
  13. local s
  14. local tbl = {};
  15. local len = 0;
  16. while (true){
  17. s = sock.receive("*l");
  18. print("s", s);
  19. //if err == "closed" then break end
  20. if (s.len() == 0) break;
  21. local slen;
  22. s.gmatch("Content%-Length: (%d+)", function(m){ slen=m; return false;});
  23. if (slen) {
  24. len = slen.tointeger();
  25. }
  26. }
  27. s = sock.receive(len);
  28. sock.close();
  29. //print(file, count)
  30. return s;
  31. }
  32. local page = download("w3.impa.br", "/~diego/software/luasocket/tcp.html");
  33. //local page = download("www.google.co.uk", "/");
  34. print(page);