test-tcp-virtual-ip.nut 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. function download(host, file, extra_header=null, device=null){
  2. local sock = socket.tcp();
  3. if(device)
  4. {
  5. print(device);
  6. try
  7. {
  8. sock.setoption("bindtodevice", device); //requires root privileges
  9. }
  10. catch(e)
  11. {}
  12. }
  13. sock.connect(host, 8070);
  14. local info = sock.getpeername()
  15. print(info.address, info.port);
  16. //sock.settimeout(1);
  17. local count = 0; // counts number of bytes read
  18. local req = "GET " + file + " HTTP/1.1\r\nHost: " + host + "\r\n";
  19. if (extra_header) req += extra_header + "\r\n";
  20. req += "\r\n";
  21. print(req, req.len());
  22. sock.send(req);
  23. local s, rc;
  24. local tbl = {};
  25. local len = 0;
  26. while (true){
  27. rc = sock.receive("*l");
  28. s = rc[0];
  29. print("s", s, rc[1]);
  30. //if err == "closed" then break end
  31. if (s.len() == 0) break;
  32. //if (rc[1] == socket.IO_CLOSED) break;
  33. local slen;
  34. s.gmatch("Content%-Length: (%d+)", function(m){ slen=m; return false;});
  35. if (slen) {
  36. len = slen.tointeger();
  37. }
  38. }
  39. rc = sock.receive(len);
  40. s = rc[0];
  41. sock.close();
  42. //print(file, count)
  43. return s;
  44. }
  45. local page;
  46. for(local i=70; i<=80; ++i)
  47. {
  48. page = download("10.10.6.4", "/", null, "eth0:" + i);
  49. }
  50. //local page = download("www.google.co.uk", "/");
  51. print(page);