`
- 浏览:
1264224 次
-
publicHashMap<String,String>getRequestHeader(byte[]data){StringrequestHeader=newString(data);requestHeader=requestHeader.substring(0,requestHeader.indexOf("\r\n\r\n")); String[]reqarr=requestHeader.split("\r\n"); reqHeader=newHashMap<String,String>(); for(inti=0;i<reqarr.length;i++){StringrequestHeaderLine=reqarr[i]; if(requestHeaderLine.toUpperCase().startsWith("GET")||requestHeaderLine.toUpperCase().startsWith("POST")){String[]first=requestHeaderLine.split("
");if(first.length==3){Stringmethod=first[0];Stringlocation=first[1].replaceAll("\\s","");Stringprotocol=first[2].split("/")[0];StringprotocolVersion=first[2].split("/")[1];reqHeader.put("Method",method);reqHeader.put("Location",location);reqHeader.put("Protocol",protocol);reqHeader.put("ProtocolVersion",protocolVersion);}}else{String[]reqlinearr=requestHeaderLine.split(":");if(reqlinearr.length==2){Stringkey=reqlinearr[0];Stringvalue=reqlinearr[1].replaceAll("\\s","");reqHeader.put(key,value.replaceAll("\\s",""));}}} returnreqHeader;}publicStringgetResponseHeader(){StringoriginKey=reqHeader.get("Sec-WebSocket-Key")+"258EAFA5-E914-47DA-95CA-C5AB0DC85B11";java.security.MessageDigestalga=null;byte[]digesta=null;try{alga=java.security.MessageDigest.getInstance("SHA-1");alga.update(originKey.getBytes()); digesta=alga.digest();}catch(NoSuchAlgorithmExceptione){e.printStackTrace();}byte[]respKey=org.apache.commons.codec.binary.Base64.encodeBase64(digesta);Stringheader="HTTP/1.1
101 Switching Protocols\r\n"+"Upgrade: Websocket\r\n"+"Connection: Upgrade\r\n"+"Sec-WebSocket-Accept:
"+newString(respKey)+"\r\n\r\n";returnheader;}
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
4. **请求头解析**:WebSocket握手请求是HTTP请求,因此你需要解析请求头以确认WebSocket连接。这可以通过`HttpRequestHeaders`属性完成: ```csharp var headers = context.Request.Headers; if (!headers....
`iot_sha1.c`和`iot_sha1.h`则涉及SHA-1散列算法,WebSocket协议在握手过程中使用了此算法来验证消息的完整性。SHA-1被用于生成一个消息验证码(Message Authentication Code, MAC),确保数据在传输过程中未被篡改...
- 鉴权成功,WebSocket握手回复的状态码为101。 - 鉴权失败,状态码为403,响应报文包含错误信息,可据此了解失败原因。 6. **数据交换**: - 握手成功后,通过WebSocket连接发送和接收数据。请求方发送JSON格式...
7. **取SHA1**:在生成Sec-WebSocket-Accept头时,服务器通常会用到SHA1哈希算法,结合客户端提供的Sec-WebSocket-Key和特定的GUID字符串计算出响应值。 8. **切片**:在处理二进制数据时,可能需要对字节序列进行...
- 在WebSocket握手阶段,请求方需将签名参数添加到URL后面,并进行URL编码。 - 服务端验证签名,若合法则返回状态码101,否则返回状态码403并附带错误信息。 5. 数据交互格式: - 所有数据均以JSON格式传输。 -...
Websocket只需一次握手即可建立连接,实现数据的直接交换,响应速度极快。 在Web软件应用框架的设计中,除了传统的客户端、数据层和Web层之外,引入了Web缓存层。这个缓存层存储在内存中,提高了读写效率,避免在...
它实现了握手、帧处理以及数据传输等功能,使得开发者可以轻松地在 C 语言环境中创建 WebSocket 服务端和客户端应用。 2. **C 语言实现** 由于是用 C 语言编写的,libwebsockets 具有高度的可移植性。C 语言的通用...
WebSocket协议是一种在互联网上实现双向通信的规范,它允许Web应用和服务端进行全双工通信,极大地提高了实时性。这个库的目标是为开发者提供一个简单、高效且易于集成的解决方案。 **1. WebSocket协议** ...
握手过程由客户端发起,而不是服务端,且握手部分的HTTP请求中的头字段没有顺序要求。 ### 计算机系统的状态表示 - **知识点**:程序状态字(PSW)通常用来记录处理器的状态。 - **解释**:在计算机系统中,表示...
3. **WebSocket**:一种双向通信协议,可以实现客户端和服务端的持续连接,并进行全双工通信。 4. **Server-Sent Events (SSE)**:服务器向客户端推送数据,但客户端不能向服务器发送数据。 #### WebSocket 示例...
本篇将深入探讨基于C语言的TCP协议实现,以及如何构建一个简单的TCP客户端和服务端。 首先,TCP协议的基础是建立在三次握手的基础上,确保了两端之间的可靠连接。在C语言中,我们通常使用`socket`库来处理网络通信...