Never too old to learn.

http协议测试

Posted on By Andy Zhu

今天做了一个关于http的测试,测试了一下广域网访问的可行性,如下:

uses zul_socket;
var
 a:Tserver;
 b:Vlabel;
 t:longint;
begin
 a:=Tserver.create;
 a.port:=8080;
 a.init;
 t:=0;
 while true do
  begin
   b:=a.accept;
   a.send('testestest',b);
   a.close(b);
   t:=t+1;
   writeln('time(s) ',t);
  end;
end.

然后用localhost:8080访问,显示localhost 发送的响应无效。或者502 Bad Gateway

那不是显然的吗?没有使用http协议导致浏览器无法识别

这时候如果我要连接到这个网站,只能使用自己获取这台电脑的IP然后socket连接

但是这台电脑没有公网IP。。。。(不然我做这个测试干什么?)

这个时候我们就需要使用服务器转发技术

在控制台输入ngrok http 8080(注册了账户后可以永久,而不是8个小时)

然后在浏览器打开这个网址,在cmd窗口中输入netstat查看浏览器连接到的ngrok服务器的端口和IP

然后用socket直接连接

Perfact!服务器返回了server中的那个字符串

但是为了使结果跟可视化,我做了以下操作:

我在server的代码中植入了http协议,如下:

uses zul_socket;
var
 a:Tserver;
 b:Vlabel;
 t:longint;
begin
 a:=Tserver.create;
 a.port:=8080;
 a.init;
 t:=0;
 while true do
  begin
   b:=a.accept;
   a.send('HTTP/1.1 200 OK'+#13#10+'Content-Type: text/html; charset=utf-8'+#13#10#13#10+'<h1>test</h1>'+#13#10,b);
   { a.close(b); }//这个时候就不要close了
   t:=t+1;
   writeln('time(s) ',t);
  end;
end.

然后localhost:8080,显示出一号字体的test,测试成功

这时候我用ngrok转发,仍然成功。

如果我需要单用户或者指定用户连接,只需要添加验证字段即可