- 浏览: 906527 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (466)
- iPhone, iOS , Objective-c (155)
- 数据库 (20)
- 设计模式 (5)
- 第三方包管理,cocoapod (2)
- 版本管理, SVN, Subversion, Git (1)
- Google, Android, Java (14)
- Wordpress (1)
- 职业素养 (3)
- 版本管理,git (3)
- 前端小技巧 (2)
- flash (1)
- javascript (5)
- Ruby (0)
- 编程语言 (1)
- 网络常识 (1)
- 找到生活好感觉 (5)
- 产品经理 (1)
- markdown (1)
- 云服务器 (1)
- iPhone (116)
- iOS (116)
- Objective-c (116)
- 学习技巧 (2)
- Google (5)
- Android (6)
- Java (21)
- python (1)
- sqlite (3)
- node.js (2)
- mongodb (2)
- 学习技巧,阅读 (2)
- 软件测试 (3)
- 架构设计 (2)
- 设计 (1)
- Spring framework (3)
- junit (1)
- Linux (2)
- 软件 (1)
- Struts2 (1)
- 版本管理 (3)
- SVN (3)
- Subversion (3)
- Git (3)
- mysql (5)
- quartz (1)
- 无关技术 (1)
- 前端 (1)
- Redis (1)
- 产品管理 (0)
- 计算机常识 (1)
- 计算机科学 (0)
- swift (1)
- 服务器 (2)
- 搜索 (1)
- Scala (1)
- J2EE (1)
- maven (1)
- 前端css (1)
- 英语 (1)
- 消息队列 (1)
- kafka (0)
- apache kafka (4)
- netbeans (1)
- IDE (2)
- 歌词 (1)
- 过滤器实现 (1)
- linux vim vi (1)
- jmeter (1)
- springcloud (1)
最新评论
-
hujingnemo:
不知道为什么打不开
CHM如何改编字体大小 -
weiboyuan:
求答案 weiboyuanios@163.com
iOS软件工程师面试题(高级) -
xueji5368:
这个现在已经广泛使用了嘛!
RoboGuice入门 -
Yao__Shun__Yu:
...
CHM如何改编字体大小 -
353144886:
非常之详细 美女求认识
sqlite数据类型 datetime处理
参考文章:
http://abbshr.github.io/2013/11/05/new46.html
http://www.zhihu.com/question/20215561 等
首先,
HTTP WEBSCOKET SCOKET是三个网络协议,http网络协议目前最新版本为1.1 相关的API有HTML5等,使用httprequest httpresponse来收发数据,数据采用应答式,即客户端主动向服务端发送数据请求,服务端返回数据,应答结束,连接结束。当然可以使用keep-alive的应答模式,但是即使在这种模式中也是通过客户端ajax,comet(还没研究)等技术来实现,本质上服务端还是无法主动向客户端发送数据。(而且目前的web server中普遍有timeout的概念如apache2.0为15s 2.2为5s timeout后会断开keep-alive的连接)
socket基于TCP/IP的网络协议,数据以数据包package的形式传递,多用于桌面程序中,比较成熟,应用广泛,基于transport layer数据传递。
数据接收过程中以package的形式传递,接收的时候不保证一次接收到想要的数据长度,需要循环接收知道数据完整,常用的函数:
socket("ip","port")
bind()
send()
recv()
read()
write()等
websocket是html5中提供的api 基本原理是在http协议层上实现了tcp通信(可双向收发信息,和http有本质的不同html5的新东西嘛,不过底层实现的原理还没有研究呢)。
和http的区别在于真正实现了双向收发数据(一个是application layer 一个是 TCP layer),但是是为了解决浏览器和web server通信不能使用tcp来实现而出现了,因此为了兼容在websocket和web server进行handshake的时候使用了http协议(只有这一个地方使用了http协议,之后数据交互使用的是tcp协议),和普通http不同的是协议中发送的数据为:
upgrade : websocket 明确告诉服务器使用升级版本协议websocket如果服务器不支持会返回错误 ,支持则连接创建成功(这个要说明的是websocket的连接需要客户端服务器同时支持否则无法成功连接)
client:
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Key: ************==
Sec-WebSocket-Version: **
server:
Upgrade:websocket
Connnection: Upgrade
Sec-WebSocket-Accept: ******************
和socket不同的是首先websocket是为了解决browser和web server的数据传输而产生的,因此为了兼容使用了http协议的handshake,其次数据传输使用了frame格式的数据 区别于socket的package数据包的格式,如
下面就是一个Frame:(以bit为单位表示)
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-------+-+-------------+-------------------------------+
|F|R|R|R| opcode|M| Payload len | Extended payload length |
|I|S|S|S| (4) |A| (7) | (16/64) |
|N|V|V|V| |S| | (if payload len==126/127) |
| |1|2|3| |K| | |
+-+-+-+-+-------+-+-------------+ - - - - - - - - - - - - - - - +
| Extended payload length continued, if payload len == 127 |
+ - - - - - - - - - - - - - - - +-------------------------------+
| |Masking-key, if MASK set to 1 |
+-------------------------------+-------------------------------+
| Masking-key (continued) | Payload Data |
+-------------------------------- - - - - - - - - - - - - - - - +
: Payload Data continued ... :
+ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +
| Payload Data continued ... |
+---------------------------------------------------------------+
三者都是基于TCP协议的,socket TCP协议 websocket HTTP + TCP协议 HTTP TCP协议(HTTP通信本质上是server开启了一个TCP连接来处理HTTP请求,keep-alive的原理就是开启并保持一个持久了tcp channel来处理多个HTTP请求,非keep-alive则是处理完一个http请求后tcp channel 随之关闭)。
另外,websocket(ws)使用端口80(http) websocket security(wws)443(https)使用HTTP一样的端口。
http://abbshr.github.io/2013/11/05/new46.html
http://www.zhihu.com/question/20215561 等
首先,
HTTP WEBSCOKET SCOKET是三个网络协议,http网络协议目前最新版本为1.1 相关的API有HTML5等,使用httprequest httpresponse来收发数据,数据采用应答式,即客户端主动向服务端发送数据请求,服务端返回数据,应答结束,连接结束。当然可以使用keep-alive的应答模式,但是即使在这种模式中也是通过客户端ajax,comet(还没研究)等技术来实现,本质上服务端还是无法主动向客户端发送数据。(而且目前的web server中普遍有timeout的概念如apache2.0为15s 2.2为5s timeout后会断开keep-alive的连接)
socket基于TCP/IP的网络协议,数据以数据包package的形式传递,多用于桌面程序中,比较成熟,应用广泛,基于transport layer数据传递。
数据接收过程中以package的形式传递,接收的时候不保证一次接收到想要的数据长度,需要循环接收知道数据完整,常用的函数:
socket("ip","port")
bind()
send()
recv()
read()
write()等
websocket是html5中提供的api 基本原理是在http协议层上实现了tcp通信(可双向收发信息,和http有本质的不同html5的新东西嘛,不过底层实现的原理还没有研究呢)。
和http的区别在于真正实现了双向收发数据(一个是application layer 一个是 TCP layer),但是是为了解决浏览器和web server通信不能使用tcp来实现而出现了,因此为了兼容在websocket和web server进行handshake的时候使用了http协议(只有这一个地方使用了http协议,之后数据交互使用的是tcp协议),和普通http不同的是协议中发送的数据为:
upgrade : websocket 明确告诉服务器使用升级版本协议websocket如果服务器不支持会返回错误 ,支持则连接创建成功(这个要说明的是websocket的连接需要客户端服务器同时支持否则无法成功连接)
client:
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Key: ************==
Sec-WebSocket-Version: **
server:
Upgrade:websocket
Connnection: Upgrade
Sec-WebSocket-Accept: ******************
和socket不同的是首先websocket是为了解决browser和web server的数据传输而产生的,因此为了兼容使用了http协议的handshake,其次数据传输使用了frame格式的数据 区别于socket的package数据包的格式,如
下面就是一个Frame:(以bit为单位表示)
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-------+-+-------------+-------------------------------+
|F|R|R|R| opcode|M| Payload len | Extended payload length |
|I|S|S|S| (4) |A| (7) | (16/64) |
|N|V|V|V| |S| | (if payload len==126/127) |
| |1|2|3| |K| | |
+-+-+-+-+-------+-+-------------+ - - - - - - - - - - - - - - - +
| Extended payload length continued, if payload len == 127 |
+ - - - - - - - - - - - - - - - +-------------------------------+
| |Masking-key, if MASK set to 1 |
+-------------------------------+-------------------------------+
| Masking-key (continued) | Payload Data |
+-------------------------------- - - - - - - - - - - - - - - - +
: Payload Data continued ... :
+ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +
| Payload Data continued ... |
+---------------------------------------------------------------+
三者都是基于TCP协议的,socket TCP协议 websocket HTTP + TCP协议 HTTP TCP协议(HTTP通信本质上是server开启了一个TCP连接来处理HTTP请求,keep-alive的原理就是开启并保持一个持久了tcp channel来处理多个HTTP请求,非keep-alive则是处理完一个http请求后tcp channel 随之关闭)。
另外,websocket(ws)使用端口80(http) websocket security(wws)443(https)使用HTTP一样的端口。
发表评论
-
UIImage变为NSData并进行压缩
2014-05-19 20:23 1938//sdk中提供了方法可以直接调用 UIImage *im ... -
update cocapods
2014-05-17 22:27 810早上更新cocoapod依赖库,发现更新到32.1版本,早先的 ... -
iOS发送短信息代码实例
2014-05-16 18:15 2690#import <MessageUI/Message ... -
DISPATCH TIMER
2014-05-14 16:12 734/* __block void (^callback) ... -
UITextField左边显示图片
2014-05-13 18:08 1175The overlay view displayed on t ... -
iOS调用系统打电话,发短信功能
2014-05-11 15:48 2089先介绍一种最简单的方法: 调用打电话功能 [[UIAppl ... -
iOS面试题
2014-05-09 16:10 10821.写一下UIButton与UITableView的层级结构 ... -
socket二进制报文
2014-05-09 15:18 1309里面有帧头 字符串UTF-8 中间用0隔开 又一个字符串 ... -
将网站添加到桌面的方法
2014-05-08 14:25 1664<link href="http://www. ... -
iPhone通讯录联系人操作大全
2014-05-07 10:29 14641.需要引入AddressBook.framework框架 2 ... -
sqlite获取最新插入的rowid
2014-05-07 09:59 1533除了 last_insert_rowid select max ... -
号码归属地查询,拨打电话
2014-05-06 15:07 854在程序内调用拨打电话的方法,[[UIApplication s ... -
iOS时间合并
2014-04-28 17:55 1102合并同一时间的课程,同一时间可能有多个课程,比如13:30-1 ... -
vCard通讯录格式说明
2014-04-28 16:47 2564原帖:http://freesoftman.iteye.com ... -
UISearchBar背景色全套解决方案
2014-04-25 09:36 7448os系统升级到7.1后,原来在7.0下显示正常的UISearc ... -
升级XCode5.1.1遇到的奇葩问题NSString,NSObjectRuntime.h报错,Foundation找不到
2014-04-24 11:19 903升级XCode5.1.1遇到的奇葩问题NSString,NSO ... -
将NSString转为NSArray
2014-04-22 16:52 6275// Your JSON data: NSString *c ... -
另外一种NSData转为NSString的方法
2014-04-22 15:40 1216If the data is not null-termina ... -
push隐藏UINavigtaionBar和UITabbar
2014-04-17 15:20 1099[self.navigationController setN ... -
数据库SQL
2014-04-11 13:31 9291、说明:创建数据库 CREATE DATABASE data ...
相关推荐
在Android开发中,Socket和WebSocket是两种常用的网络通信技术,它们在实时通信、数据传输等方面发挥着重要作用。本文将深入探讨这两个概念以及如何在Android应用中实现它们。 首先,我们来了解一下Socket。Socket...
基于SuperSocket的服务器 和 客户端程序 所需要的DLL 服务器端<控制台Console程序> (.Net4.0)需要引用 SuperSocket 和 SuperWebSocket -------------------------- 客户端<Unity3D> (.Net3.5) 只需要引用 ...
一个服务端,同时兼容原生socket和websocket。源代码采用vs2017开发。 这样一个服务端同时连接2种不同客户端。代码仅供参考。有漏洞地方希望指出来,
标题“delphi websocket 用socket实现”表明我们将探讨如何在Delphi中通过Socket来创建WebSocket服务端或客户端。首先,我们需要了解基础的Socket编程概念。Socket是网络通信的基础,它提供了进程间的通信接口。在...
既然websocket也是一个socket,那自己解析websocket就可以了。我只实现了握手,数据帧的简单解析。可以进行除汉字外的简单收发。如果你应用不是太深的话没问题的。若是深的话估计这些简单的你都会。。。。
在"Socket_WebSocket客户端程序v120.zip"中,我们可以推测这是一个使用Socket技术实现的WebSocket客户端程序,版本号为v120。这个程序可能包含了客户端所需的全部功能,如连接到WebSocket服务器、发送和接收数据、...
标题中的"Socket_WebSocket客户端程序v120.zip_packsu1_websocket_websocket 客户端_we"表明这是一个关于WebSocket客户端的程序,可能是一个版本号为120的实现,包含了WebSocket协议的实现以及可能与Socket编程相关...
supersocket.websocket.1.6.6.1.nupkg
本主题将深入探讨Android中的几种异步网络通信技术,包括AndroidAsync库、Socket、HTTP(客户端与服务器)、WebSocket以及socket.io库。这些技术都是基于非阻塞I/O(Non-blocking I/O,NIO)而非传统的多线程模型,...
总之,“http-websocket代理”是一种简化WebSocket通信的工具,它利用HTTP代理功能为不支持WebSocket的环境提供了兼容性,使得开发者可以更加便捷地在HTTP和WebSocket之间切换,实现高效且灵活的实时通信。...
在本项目中,"简单实现了websocket功能:websocket客户端、winformsocket客户端",意味着我们有两个关键部分:WebSocket服务器端和基于WinForm的客户端。 WebSocket客户端通常是一个应用程序,它通过WebSocket协议...
java 异步http和websocket客户端 java 异步http和websocket客户端 java 异步http和websocket客户端 java 异步http和websocket客户端 java 异步http和websocket客户端 java 异步http和websocket客户端 java 异步http...
短连接通常用于一次性传输数据,如HTTP请求,连接建立后立即传输数据并关闭。而长连接则保持一段时间的开放状态,允许多次数据交换,如FTP或HTTPS。在C#中,可以通过设置Socket的KeepAlive属性来维持长连接。 3. **...
仅限学习使用 此实例:运行demo:websocketForm.exe ...WebSocket4Net.dll log4net.dll日志组件 SuperSocket.*.dll Newtonsoft.Json.dll 使用说明见:https://blog.csdn.net/uaime/article/details/86219042
SuperWebSocket是WebSocket协议服务器端的.NET实现. 作为HTML5的一个重要新特性,WebSocket 规范的目标是在浏览器中实现和服务器端双向通信.双向通信可以拓展浏览器上的应用类型,例如实时的数据推送(股票行情),...
websocket也是套接字原理,但因为它对客户端和服务端的连接进行了升级,从http协议升级为websocket协议实现了可以从html连接到PHP。写的比较杂,并非是一个完整的项目,只是socket或websocket,不能用来做项目,只能...
当客户端发送 WebSocket 升级请求时,这个 Handler 会处理 HTTP 协议到 WebSocket 协议的转换。 4. **端口绑定与启动**: 使用 ServerBootstrap 的 `bind` 方法将服务器绑定到指定的端口。一旦成功,Netty 就会在...
`sio_socket`是一个基于WebSocket的库,它为开发者提供了更方便的方式来处理WebSocket连接和通信。这个库可能包含了对WebSocket协议的封装,简化了API,使得在实际项目中集成WebSocket变得更加简单。 在"**sio_...
Python中的WebSocket和Socket是两种在网络通信中常用的协议,它们在实时数据传输,特别是构建实时交互应用(如在线聊天、股票行情、游戏等)时扮演着重要角色。在本主题中,我们将深入探讨“python-websocket-socket...