- 浏览: 1478003 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (691)
- linux (207)
- shell (33)
- java (42)
- 其他 (22)
- javascript (33)
- cloud (16)
- python (33)
- c (48)
- sql (12)
- 工具 (6)
- 缓存 (16)
- ubuntu (7)
- perl (3)
- lua (2)
- 超级有用 (2)
- 服务器 (2)
- mac (22)
- nginx (34)
- php (2)
- 内核 (2)
- gdb (13)
- ICTCLAS (2)
- mac android (0)
- unix (1)
- android (1)
- vim (1)
- epoll (1)
- ios (21)
- mysql (3)
- systemtap (1)
- 算法 (2)
- 汇编 (2)
- arm (3)
- 我的数据结构 (8)
- websocket (12)
- hadoop (5)
- thrift (2)
- hbase (1)
- graphviz (1)
- redis (1)
- raspberry (2)
- qemu (31)
- opencv (4)
- socket (1)
- opengl (1)
- ibeacons (1)
- emacs (6)
- openstack (24)
- docker (1)
- webrtc (11)
- angularjs (2)
- neutron (23)
- jslinux (18)
- 网络 (13)
- tap (9)
- tensorflow (8)
- nlu (4)
- asm.js (5)
- sip (3)
- xl2tp (5)
- conda (1)
- emscripten (6)
- ffmpeg (10)
- srt (1)
- wasm (5)
- bert (3)
- kaldi (4)
- 知识图谱 (1)
最新评论
-
wahahachuang8:
我喜欢代码简洁易读,服务稳定的推送服务,前段时间研究了一下go ...
websocket的helloworld -
q114687576:
http://www.blue-zero.com/WebSoc ...
websocket的helloworld -
zhaoyanzimm:
感谢您的分享,给我提供了很大的帮助,在使用过程中发现了一个问题 ...
nginx的helloworld模块的helloworld -
haoningabc:
leebyte 写道太NB了,期待早日用上Killinux!么 ...
qemu+emacs+gdb调试内核 -
leebyte:
太NB了,期待早日用上Killinux!
qemu+emacs+gdb调试内核
c语言的socket基础http://haoningabc.iteye.com/blog/2305026
python的socket基础+select的方式http://haoningabc.iteye.com/blog/2305036
之后改造jslinux-network
把websocket和tap绑定
注意改了源码保证多个浏览器客户端可以同时ping通10.0.2.1
加的代码为
外层
共有变量
tuntapFD=-1
内层websocket代码
web_socket_transfer_data中添加
完整代码为
去happy吧
https://bitbucket.org/ivucica/websocketstuntap/
python的socket基础+select的方式http://haoningabc.iteye.com/blog/2305036
之后改造jslinux-network
把websocket和tap绑定
注意改了源码保证多个浏览器客户端可以同时ping通10.0.2.1
加的代码为
外层
共有变量
tuntapFD=-1
内层websocket代码
web_socket_transfer_data中添加
global tuntapFD if(tuntapFD == -1): tuntapFD, x, y = setupTUNTAP()
完整代码为
import sys, os, struct, select import base64 netBufferExpected = 0 def web_socket_do_extra_handshake(request): """Received Sec-WebSocket-Extensions header value is parsed into request.ws_requested_extensions. pywebsocket creates extension processors using it before do_extra_handshake call and never looks at it after the call. To reject requested extensions, clear the processor list. """ # for easier debugging: request.ws_extension_processors = [] tuntapFD=-1 def web_socket_transfer_data(request): """Echo. Same as echo_wsh.py.""" global tuntapFD if(tuntapFD == -1): tuntapFD, x, y = setupTUNTAP() print("--->tuntapFD end:"+str(tuntapFD)) # FIXME according to this post from 2010: # https://groups.google.com/forum/#!topic/pywebsocket/MY6HoG4KRCA # this method for fetching requestFD only works for standalone server requestFD = request.connection._request_handler.rfile._sock.fileno() socketlist = { requestFD:'websocket', #sys.stdin:'stdio', tuntapFD: 'tuntap' } netBuffer = "" while True: inputSockets = socketlist.keys() outputSockets = [] errorSockets = [] (inputReady, outputReady, errorOccurred) = select.select(inputSockets, outputSockets, errorSockets, 1) for each in inputReady: if socketlist[each] == 'websocket': netBuffer = process_requestFD(request, netBuffer) elif socketlist[each] == 'tuntap': output = os.read(tuntapFD, 8192) output = struct.pack('!H', len(output)) + output # network byte order short is "tapper"'s header request.ws_stream.send_message(output, binary=True) def process_requestFD(request, netBuffer): global netBufferExpected message = request.ws_stream.receive_message() if message is None: return netBuffer if isinstance(message, unicode): # text message - ignore it incomingData = base64.decodestring(message) pass else: incomingData = message #base64.decodestring(aNode.getCDATA()) if 1: # temp netBuffer += incomingData while len(netBuffer) >= netBufferExpected: if len(netBuffer) > 0 and netBufferExpected > 0: print " GOT ALL DATA!" try: dataToWrite = netBuffer[:netBufferExpected] print " (writing " + str(len(dataToWrite)) + " bytes)" os.write(tuntapFD, dataToWrite) netBuffer = netBuffer[netBufferExpected:] netBufferExpected = 0 print " (data remaining in buffer: " + str(len(netBuffer)) + ")" except Exception, e: print "problem" print e if len(netBuffer) > 2: netBufferExpected = struct.unpack('!H', netBuffer[0:2])[0] #netBufferExpected = socket.ntohs(netBufferExpected) netBuffer = netBuffer[2:] print " NOW EXPECTING " + str(netBufferExpected) if netBufferExpected > 1500 * 2: # more than 2x MTU? something is wrong print " (which is more than 2x MTU, so giving up)" netBuffer = "" netBufferExpected = 0 if len(netBuffer) == 0 and netBufferExpected == 0: break return netBuffer def setupTUNTAP(): #tuntapDevice = "tap2" tuntapDevice = "net/tun" # if len(sys.argv) >= 2: # tuntapDevice = sys.argv[1] ipAddress = "10.0.2.1" # if len(sys.argv) >= 3: # ipAddress = sys.argv[2] tuntapFD = os.open("/dev/" + tuntapDevice, os.O_RDWR) if tuntapDevice == "net/tun": # Linux specific code TUNSETIFF = 0x400454ca IFF_TUN = 0x0001 IFF_TAP = 0x0002 IFF_NO_PI = 0x1000 TUNMODE = IFF_TAP TUNMODE |= IFF_NO_PI # do not prepend protocol information from fcntl import ioctl ifs = ioctl(tuntapFD, TUNSETIFF, struct.pack("16sH", "websockettuntap%d", TUNMODE)) tuntapDevice = ifs[:16].strip("\x00") sys.stderr.write("tuntapdevice: " + tuntapDevice + "\n") os.system("ifconfig " + tuntapDevice + " inet " + ipAddress); return (tuntapFD, tuntapDevice, ipAddress) # vi:sts=4 sw=4 et
去happy吧
https://bitbucket.org/ivucica/websocketstuntap/
发表评论
-
websocket直播
2020-05-22 17:59 5091.websocket转发的最简单server 2.h5接收w ... -
sdl笔记
2019-01-31 17:19 733sdl教程教程 https://github.com/Twin ... -
tinyemu
2019-01-24 17:59 1433参考https://bellard.org/jslinux/t ... -
建立tap设备的c的代码
2019-01-08 19:09 474tapper.c #include <stdio.h& ... -
jslinux总结帖
2019-01-04 21:33 1135注意个问题: chrome不要用两个tab页,否则ping不通 ... -
br0和tap0的互相影响
2019-01-02 19:17 815转载 http://www.cnblogs.com/wlei/ ... -
openresty聊天室的helloworld
2018-04-22 19:25 801openresty的websocket + redis的sub ... -
openresty websocket
2018-04-18 17:08 1521mac安装openresty brew install o ... -
emscripten asm.js的helloworld
2018-03-01 20:15 1112mac下安装: brew install SDL2 SDL2_ ... -
nginx代理wss和https
2018-02-27 15:34 3929nginx启用ssl yum install openssl ... -
jslinux-deobfuscated-network
2017-02-13 22:37 715基础知识 查看网络包 tcpdump -i eth0 -e ... -
用buildroot为jslinux建立最小rootfs
2016-11-18 17:59 1270############################### ... -
jslinux带网络功能的内核
2016-11-15 15:35 811想重新编译jslinux-network 的内核,其实就是比f ... -
Tunnels with iproute2
2016-11-14 15:22 585copy from http://members.ferrar ... -
nginx rewrite替代apache rewrite
2016-10-18 20:30 835清理chrome的缓存 chrome://appcache-i ... -
qemu用tap方式启动vm的网络试验(ip route)
2016-09-14 11:29 2806ip route add 192.168.8.0/24 via ... -
socket的方式使用qemu建立虚拟机
2016-06-24 17:54 1911qemu的-net参数 -net nic 必须有,基本配置mo ... -
tap的方式使用qemu建立虚拟机NAT网络
2016-06-23 18:03 9851基本概念: vm:虚拟机 ... -
qemu用nat的方式使用tap建立虚拟机
2016-06-23 16:15 11普通桥接参考 http://haoningabc.iteye. ... -
tap的方式使用qemu建立虚拟机桥接网络
2016-06-22 20:53 7838需求:建立一个虚拟机,使网络和内网一样,当一台普通接入内网的服 ...
相关推荐
本篇博客介绍微信小程序中webSocket的使用方法,以及如何用局部网络建立webSocket连接,进行客户端与服务器之间的对话: webSocket简介 微信小程序端API调用 服务器端使用nodejs配置 演示websocket webSocket...
在Vue.js项目中,我们可以利用WebSocket实现全局的使用,以便在整个应用中轻松地发送和接收数据。以下是如何在Vue CLI 3构建的项目中全局使用WebSocket的详细步骤: 1. **创建WebSocket服务端** 首先,你需要在...
值得注意的是,为了保证数据的安全性和完整性,通常会在WebSocket消息中使用JSON或其他结构化格式封装数据。在解析这些数据时,需要确保正确解码并转化为FastReport能够识别的格式。同时,考虑到错误处理和异常情况...
2. **创建WebSocket端点**:使用Spring的`@ServerEndpoint`注解定义WebSocket连接的端点,处理连接建立、消息发送和断开连接等生命周期事件。 3. **Netty服务器**:创建一个Netty服务器,配置WebSocket服务器通道...
在OpenWRT上运行WebSocket服务器需要注意的是,由于资源限制,可能需要优化代码以降低内存和CPU的使用。此外,为了安全考虑,可能需要配置防火墙规则,允许特定端口的WebSocket连接,并确保服务器的代码没有安全漏洞...
WebSocket是一种在客户端和服务器之间建立持久连接的协议,它允许...通过以上内容,你可以了解如何在C#中使用WebSocket-sharp库实现WebSocket服务器和客户端。实际开发中,可以根据项目需求进行更深入的定制和优化。
2. **配置WebSocket连接**:在Unity脚本中,使用BestHttp提供的WebSocket类来创建和管理连接。你需要指定WebSocket服务器的URL,并设置相应的连接参数。 3. **建立连接**:调用WebSocket的Open方法来建立与服务器的...
3. **心跳机制**:为了检测连接是否正常,WebSocket连接通常会使用心跳机制,即客户端和服务器周期性地发送空数据帧来确认连接状态。 4. **JavaScript API**:在JavaScript中,WebSocket对象提供了一组API来创建、...
在IT行业中,WebSocket是一种在客户端和服务器之间建立长连接的网络通信协议,它极大地提高了实时通信的效率。本文将深入探讨在ThinkPHP6框架中如何使用Workerman库来实现WebSocket连接,以及相关的技术要点。 首先...
本主题聚焦于使用Fleck和WebSocketSharp两个库来实现WebSocket通信,这主要用于创建一个实时、双向的通信渠道,常见于股票交易系统、在线游戏等场景。在Windows桌面应用程序(Winform)开发中,C#语言提供了丰富的库...
例如,`@ServerEndpoint`注解用于标识一个处理WebSocket连接的类,而`onMessage`方法则用于接收和处理来自客户端的消息。 3. 创建WebSocket服务端点: 在Java中,我们定义一个带有`@ServerEndpoint`注解的类,如`...
可以使用WebSocket测试工具,如Chrome的`websocket.org/echo.html`,或者开发专用的测试客户端,检查连接、消息发送和接收的正确性。 7. **注意事项** - Android系统的网络限制:由于安卓的网络权限管理,确保...
使用Springboot集成的websocket需要使用到以下几个类/接口: WebSocketHandler:WebSocket消息以及生命周期事件的处理器。 WebSocketConfigurer:对WebSocket进行配置,包括配置拦截器、配置接口地址。 ...
在实际应用中,你可以使用各种编程语言和框架来实现WebSocket服务。例如,对于Node.js,可以使用`ws`库;在Python中,可以选择`Flask-SocketIO`或`Sanic-WebSocket`。这些库提供了创建WebSocket服务器、监听连接、...
在使用WebSocket Sharp时,可以通过以下方式创建和操作WebSocket实例: 1. **WebSocket 客户端**: - 首先,引入必要的命名空间`using WebSocketSharp;` - 使用`new WebSocket("ws://服务器地址")`创建一个新的...
本文将深入探讨`tio-websocket`的使用方法,它是由`t-io`官方提供的唯一WebSocket示例教程,涵盖了包括WSS安全连接和监控在内的高级特性。`t-io`是一个高性能、易用的Java NIO框架,而`tio-websocket`是其专门针对...
### WebSocket的Java和Tomcat7使用详解 #### 一、WebSocket简介 随着互联网技术的不断发展,Web应用变得越来越复杂,传统的HTTP协议已经无法满足实时通信的需求。为了改善这一状况,HTML5引入了WebSocket协议,这...
java tomcat 7.0.42 websocket可使用java tomcat 7.0.42 websocket可使用java tomcat 7.0.42 websocket可使用java tomcat 7.0.42 websocket可使用
3. **连接WebSocket**:解释如何通过代理服务器连接到目标WebSocket服务器,包括ws和wss(加密的WebSocket)协议的使用。 4. **数据传输**:描述数据如何在HTTP客户端和WebSocket服务器之间通过代理进行传递,可能...