IdHTTPServer完成websocket服务端编写
2015-02-12 21:44
281 查看
利用delphi的idhttpserver控件来做websocket的服务端。主要是握手过程,后面的通讯还未实现。实现了再发代码。握手代码如下。
IdCoderMIME,IdHashSHA;。采用xe7编译。
procedure TfWebSocket.IdHTTPServer1CommandGet(AContext: TIdContext; ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo); var svk,sValue:string; FHash: TIdHashSHA1; strmRequest: TMemoryStream; begin FHash := TIdHashSHA1.Create; strmRequest := TMemoryStream.Create; strmRequest.Position := 0; svk:=ARequestInfo.RawHeaders.Values['Sec-WebSocket-Key']; Memo1.Lines.Add('Get:'+svk); AResponseInfo.ResponseNo := 101; AResponseInfo.ResponseText := 'Switching Protocols'; AResponseInfo.CloseConnection := False; //Connection: Upgrade AResponseInfo.Connection := 'Upgrade'; //Upgrade: websocket AResponseInfo.CustomHeaders.Values['Upgrade'] := 'websocket'; //Sec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZRbK+xOo= sValue := svk + //... "minus any leading and trailing whitespace" '258EAFA5-E914-47DA-95CA-C5AB0DC85B11'; //special GUID sValue := TIdEncoderMIME.EncodeBytes( //Base64 FHash.HashString(sValue) ); //SHA1 //sValue := string(FHash.CalcString(AnsiString(sValue))); //SHA1 + Base64 AResponseInfo.CustomHeaders.Values['Sec-WebSocket-Accept'] := sValue; //send same protocol back? AResponseInfo.WriteHeader; end;其中引用单元uses
IdCoderMIME,IdHashSHA;。采用xe7编译。
相关文章推荐
- http协议 使用httpserver组件完成server(服务端)接受post请求数据并使用3DES+base64加解密希望对大家有帮助
- 编写自己的WEB服务端http_client 源代码
- IdHttpServer实现webservice
- php中soap使用,SoapServer服务端编写,SoapClient客户端编写
- JDK6中httpserver创建http服务端实例
- HttpClient4.5.2由Client客户端上传File文件流至Server服务端
- Flash Media Server 2使用入门基础http://blog.breakn.net/article.asp?id=267
- Java数据接口编写简单例子,Java Json解析,服务端接口输出Json数据,客户端通过HTTP获取接口Json数据
- HTTP服务端接口模拟工具-HttpServerMockTool
- HTTP服务端接口模拟工具-HttpServerMockTool
- linux c++使用libevent编写http server + http client
- 当前地址: <a href='"+Request.ServerVariables("HTTP_HOST").Item+"/a.asp?id="+sId+"'>点击查看</a>";
- python3.x配置Apache http server(完成和mod_python相同的功能)
- Microsoft SQL Server Data Tools - Business Intelligence for Visual Studio 2013 http://www.microsoft.com/en-us/download/details.aspx?id=42313
- java编写WebSocket服务端
- 使用Mina2.x编写同时支持TCP和HTTP的服务端
- StandardServer.await: Invalid command 'GET /setting/webSocket HTTP/1.1' rece
- ArcServer 10安装完成后,访问ArcGIS Server Manager时出现HTTP 错误 500.19 - internet server error
- (死亡历险)Delphi7 IdTCPClient1,IdTCPServer1客户端向服务端发送指令进行文件下载
- 【转载】Java数据接口编写简单例子,Java Json解析,服务端接口输出Json数据,客户端通过HTTP获取接口Json数据,作者:Jaiky_杰哥