WebSocket ,indy10 求高手指点迷津!

panwujun 2013-08-25 05:13:45
我用的是 delphi7 ,用HTML文件做为客户端,delphi7 的 INDY10版本的IdTCPServer1控件。

连接后,DELPHI程序IdTCPServer1Execute 事件收到网页发来的信息:,但是一直无法握手成功

GET / HTTP/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 ////读取客户信息,SHA加密等
ssKey:=copy(scommand,19,length(scommand))+'258EAFA5-E914-47DA-95CA-C5AB0DC85B11';
jjstr:='';
SHA1Init(SHA1Context); //开始SHA加密
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('HTTP/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: http://127.0.0.1');
AContext.Connection.Socket.WriteLn('WebSocket-Location: ws://127.0.0.1:8080');
end;

我遇到的问题是,无法握手验证通过,好像不管我发送什么HTML那边都再没有信息返回,
网页和程序之间无法发送信息,实在解决不了,请大哥大姐指点一下,感激不尽!!
...全文
402 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
panwujun 2013-08-27
  • 打赏
  • 举报
回复
等待高手出现!我愿支付一点费用,谢谢!!!!!
wylton 2013-08-27
  • 打赏
  • 举报
回复
你客户端没有在倾听和接收。 翻看下论坛别人的问题, 有很相似的, 有你的答案。 还有友情提醒下, 问这种问题,你最好发2端的代码(服务端和客户端),不要让人去猜测你的问题。

1,593

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 网络通信/分布式开发
社区管理员
  • 网络通信/分布式开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧