我用的是 delphi7 ,用HTML文件做为客户端,delphi7 的 INDY10版本的IdTCPServer1控件。
连接后,DELPHI程序IdTCPServer1Execute 事件收到网页发来的信息:,但是一直无法握手成功
GET / HT*P/1.1
Upgrade: websocket
Connection: Upgrade
Host: localhost:8080
Origin: null
Sec-WebSocket-Key: /mbLym4mEC4Lbx5al1ELVg==
Sec-WebSocket-Version: 13
=======================
然后,我在DELPHI服务器用下面的代码来发送
if (copy(scommand,1,17)='Sec-WebSocket-Key') then begin ////读取客户信息,SHA1等
ssKey:=copy(scommand,19,length(scommand))+'258EAFA5-E914-47DA-95CA-C5AB0DC85B11';
jjstr:='';
SHA1Init(SHA1Context); //开始SHA1
SHA1Update(SHA1Context, PChar(ssKey), Length(ssKey));
SHA1Final(SHA1Context, SHA1Digest);
s2:=EncodeString(PChar(@SHA1Digest) );
jjstr:=s2;
end;
if copy(scommand,1,21)='Sec-WebSocket-Version' then begin //发送握手验证信息
Handshake:=true;
AContext.Connection.Socket.WriteLn('HT*P/1.1 101 Switching Protocols');
AContext.Connection.Socket.WriteLn('Upgrade: WebSocket');
AContext.Connection.Socket.WriteLn('Connection: Upgrade');
AContext.Connection.Socket.WriteLn('Sec-WebSocket-Accept: '+jjstr );
AContext.Connection.Socket.WriteLn('WebSocket-Origin: ht*p://127.0.0.1');
AContext.Connection.Socket.WriteLn('WebSocket-Location: ws://127.0.0.1:8080');
end;
我遇到的问题是,无法握手验证通过,好像不管我发送什么HTML那边都再没有信息返回,
网页和程序之间无法发送信息,实在解决不了,请大哥大姐指点一下,感激不尽!!
已自己解决,不用再回答了
WebSocket ,delphi 求高手指点迷津!
答案:2 悬赏:70 手机版
解决时间 2021-01-28 17:11
- 提问者网友:轮囘Li巡影
- 2021-01-27 17:30
最佳答案
- 五星知识达人网友:拜訪者
- 2021-01-27 19:00
请问你是怎么解决的?非常感谢你能帮小弟一把。邮件地址:weiqigz@163.com
全部回答
- 1楼网友:思契十里
- 2021-01-27 20:00
这个很高深啊,我也不会
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯