socket笔记
参考:
http://www.cnblogs.com/dolphinX/p/3460545.html
http://www.cnblogs.com/wei2yi/archive/2011/03/23/1992830.html
http://www.2cto.com/net/201211/166537.html
概念:
TCP协议与HTTP协议区别:
HTTP协议是短链接,单向通信,属于OSI参考模型里的应用层协议
TCP协议是长链接,双工通信,属于OSI参考模型里的传输层协议
---------------------------------------------------------------------------------------------------------
socket:
socket是对TCP/IP协议的封装,它是在应用层和传输层之间的一个抽象层,它把TCP/IP层复杂的操作抽象为几个简单的接口供应用层调用以实现进程在网络中通信。通过Socket,我们才能使用TCP/IP协议,简而言之,socket是调用TCP/IP协议的API。

---------------------------------------------------------------------------------------------------------
WebSocket API是下一代客户端-服务器的异步通信方法,是W3C推动的一个客户端标准,隶属于HTML5的范畴。
用法如下:
WebSocket API是只专注于客户端的API,因为每个服务器端语言有自己的API。下面的代码片段是打开一个连接,为连接创建事件监听器,断开连接,消息时间,发送消息返回到服务器,关闭连接。
var socket = new WebSocket('ws://localhost:8080');
// 打开Socket
socket.onopen = function(event) {
// 发送一个初始化消息
socket.send('I am the client and I\'m listening!');
// 监听消息
socket.onmessage = function(event) {
console.log('Client received a message',event);
};
// 监听Socket的关闭
socket.onclose = function(event) {
console.log('Client notified socket has closed',event);
};
// 关闭Socket....
//socket.close()
};
---------------------------------------------------------------------------------------------------------
Socket.IO:
由于有的低版本浏览器不支持WebSocket,所以出现了一个Socket.IO技术,他是对WebSocket的封装,不仅实现了ws协议,也支持长轮询等方式,兼容flash,IE6等不支持ws协议的浏览器。
简单例子:
服务端:
var app = require('http').createServer(handler), //创建一个HTTP服务器
io = require('socket.io').listen(app),//把服务器实例传递给Socket.IO
fs = require('fs'),url = require("url");
app.listen(8080);//绑定8080端口
function handler (req, res) {
fs.readFile(__dirname + '/home.html',function (err, data) {
if (err) {
res.writeHead(500);
return res.end('Error loading home.html');
}
res.writeHead(200, {'Content-Type': 'text/html'});
res.end(data);
});
}
io.sockets.on('connection', function (socket) { //监听socket连接,执行回调
socket.emit('news',{'name':'zzn'});//发射一个news事件
socket.on('my other event', function (data) {//监听my other event这个事件
console.log(data);
});
});
客户端home.html:
<script src="//cdn.bootcss.com/socket.io/1.3.7/socket.io.js"></script>
<script type="text/javascript">
var socket = io.connect('http://localhost:8080/');//建立socket连接
socket.on('news', function (data) {//监听news事件
console.info(data)
socket.emit('my other event', { my: 'data' });//发射my other event这个事件
});
</script>
---------------------------------------------------------------------------------------------------------
socket.io API
http://www.cnblogs.com/xiezhengcai/p/3956401.html
socket笔记的更多相关文章
- iOS socket 笔记
ios 客服端: 下载 AsyncSocket 开发框架,拖到项目中 //建立 #import "ViewController.h" #import <sys/socket. ...
- linux c socket笔记 -服务端
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <sys/types. ...
- C# Socket笔记
看到这个题目,是不是很眼熟?在博客园里搜下,保证会发现关于这个东东的文章实在是太多了~~~真得是没有写得必要,而且我也有点懒得去琢磨字句.(看到这,肯定得来个转折的了,不然就看不到下文了,不是吗)但是 ...
- socket 笔记(一)
#include "stdafx.h" #include "WINSOCK2.H" #pragma comment(lib,"WS2_32.lib&q ...
- 操作socket笔记
网络编程 1.tcp协议 #tcpserver #单纯一对一发 tcp = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 创建tcp套接字 参 ...
- TCP IP SOCKET 笔记
网络由下往上分为 物理层.数据链路层.网络层.传输层.会话层.表示层和应用层. 通过初步的了解,我知道IP协议对应于网络层,TCP协议对应于传输层,而HTTP协议对应于应用层, 三者从本质上来说没有可 ...
- tcp/ip http socket笔记
1.TCP/IP协议是传输层协议,主要解决数据如何在网络中传输 HTTP是应用层协议,主要解决如何包装数据 2.TCP连接的三次握手 第一次握手:客户端发送syn包到服务器,并进入SYN_SEND状态 ...
- C# Socket编程笔记(转)
C# Socket编程笔记 http://www.cnblogs.com/stg609/archive/2008/11/15/1333889.html TCP Socket:Server 端连接步骤: ...
- Android Socket编程学习笔记
http://blog.csdn.net/eyu8874521/article/details/8847173 度娘给出的描述:通常也称作"套接字",用于描述IP地址和端口,是一个 ...
随机推荐
- hadoop删除节点。
hadoop节点摘除操作: 1.确定exclude文件的位置. <property> <name>dfs.hosts.exclude</name> <valu ...
- Hive 实战(1)--hive数据导入/导出基础
前沿: Hive也采用类SQL的语法, 但其作为数据仓库, 与面向OLTP的传统关系型数据库(Mysql/Oracle)有着天然的差别. 它用于离线的数据计算分析, 而不追求高并发/低延时的应用场景. ...
- Python 学习之 NumPy
NumPy(Numerical Python的简称) 是高性能科学计算和数据分析的基础包,提供了矩阵运算的功能,其一般与Scipy.matplotlib一起使用.其实,list已经提供了类似于矩阵的表 ...
- // 开始无限播放 ViewPager
public class MainActivity extends Activity { private ViewPager vp; private Handler handler = new ...
- 蓝牙协议栈中的 OSAL
蓝牙协议栈里的操作系统叫做 OSAL(操作系统抽象层).它并非一个真正意义上的操作系统,它只是实现了操作系统的一些功能,如任务切换.内存管理. OSAL 产生的根源:基于蓝牙协议栈开发的产品,实际上是 ...
- 微信接口access_token
//调用聚合网笑话接口 $url = 'http://japi.juhe.cn/joke/img/text.from?page=&pagesize=2&key=f0d06a1fe45b ...
- Android之旅---广播(BroadCast)
什么是广播 在Android中,Broadcast是一种广泛运用的在应用程序之间传输信息的机制.我们拿广播电台来做个比方.我们平常使用收音机收音是这样的:许许多多不同的广播电台通过特定的频率来发送他们 ...
- pt-find 使用实例
pt-find - Find MySQL tables and execute actions, like GNU find. 用法:pt-find [OPTION...] [DATABASE...] ...
- javascript 刷新当前页面
编辑器加载中... 1. window.location.replace(window.location.href)
- 千里积于跬步——流,向量场,和微分方程[转载]
在很多不同的科学领域里面,对于运动或者变化的描述和建模,都具有非常根本性的地位--我个人认为,在计算机视觉里面,这也是非常重要的. 什么是"流"? 在我接触过的各种数学体系中,对于 ...