文档章节

使用 weaving-socket教学-入门socket与websocket

dreamsfly
 dreamsfly
发布于 2017/05/05 22:14
字数 813
阅读 1738
收藏 13

首先把项目下载下来: http://git.oschina.net/dreamsfly900/universal-Data-Communication-System-for-windows

还有一个同胞项目

.NET Core的weaving-socket项目

http://git.oschina.net/dreamsfly900/weaving-socket-core 

 

新版本更新后MyInterface 变更命名WeaveBase。TCPCommand变更命名,WeaveTCPCommand请务必注意。

普通的socket

新版本更新后MyInterface 变更命名WeaveBase。TCPCommand变更命名,WeaveTCPCommand请务必注意。

一个通信项目需要服务端与客户端两部分,我们先开始写一个服务端。

服务端:

创建一个控制台程序,引用类库 MyInterface与TCPServer

然后编写代码

static void Main(string[] args)
        {
            p2psever server = new p2psever();//初始化类库
            server.receiveevent += Server_receiveevent;//注册接收事件
//当然还有很多其他的事件可以注册,比如新增连接事件,连接断开事件
            server.start(8989);//启动监听8989端口
             
           
            Console.WriteLine("8989listen:");
            Console.ReadKey();
        }

        private static void Server_receiveevent(byte command, string data, System.Net.Sockets.Socket soc)
        {
            Console.WriteLine(data);//输出客户端发来的信息
        }

客户端:

然后创建一个控制台程序,引用类库 MyInterfaceTCPclient

然后编写代码

   P2Pclient client = new P2Pclient(false);//初始化类库
static void  Main(string[] args)
        {
           
            client.timeoutevent += Client_timeoutevent;//注册连接超时事件
            client.receiveServerEvent += Client_receiveServerEvent;//注册接收事件
              client.start("127.0.0.1", 8989, false);//启动连接127.0.0.1服务器的8989端口。不需要服务器TOKEN
            System.Threading.Thread.Sleep(1000);
            Console.WriteLine("server link OK:");
            client.send(0x1, "test2017-5-5");//给服务器发送信息,参数1,0x01指令,指令可以设置0-254,其中0x9c与0xff,是保留指令不能使用。参数2:发送string类型的数据。
            Console.WriteLine("send:test2017-5-5");
            Console.ReadKey();
        }

        private static void Client_receiveServerEvent(byte command, string text)
        {
          //command是从服务器发来的指令
          //text是从服务器发来的数据
        }

        private static void Client_timeoutevent()
        {
         //连接超时或断线会启动此事件
            client。Restart(false);//重新连接
        }

 

最后:先运行服务器端,在运行客户端,就能在服务器端看到 test2017-5-5 的输出内容。

 

websocket

服务端:服务端内容与一般的socket,一模一样,只需要把p2psever server = new p2psever(); 这句话换成

Webp2psever server = new Webp2psever();  就可以了,其他的用法与方法与p2psever 完全一致,都是继承与ITcpBasehelper接口

客户端:

在项目中创建一个web项目,新建一个html文件

在HTML文件中引用

 <script src="websocket.js"></script>
<script src="scripts/jquery-1.4.1.min.js"></script>

这两个文件,websocket.js在项目前端WEB示例中可以找到,或者文件夹WebApplication1 下面也可以找到。

编写JS代码

 var socket;
        // 连接服务端
        function connect() {
             // ip: '127.0.0.1', port: 8989, 要链接的服务器的IP与端口
                    //conn: 连接成功事件
                    //, recData: 接收数据事件
                    //, close: 连接关闭事件
                     //, error: 连接错误事件
                    //  , jump: 服务器资源超过最大上限,推荐跳转其他服务器的事件

            socket = new UDCsocket({
                ip: '127.0.0.1', port: 8989, conn: onopen
                    , recData: onmessage
                    , close: function () { alert("连接关闭"); }
                     , error: function (msg) { alert("连接错误" + msg); }
                      , jump: function (ip) { alert("服务器超过最大连接,请连接其他服务器:" + ip); }
            });
        }
 function onopen(msg) {//连接后启动一次
            if (msg == 'token') {//连接后如果收到token会再次启动这个方法msg 带有token标识
               
               
            }

        }
        function onmessage(text) {
           //text 就是服务器发来的数据
            
        }

这样就可以,就是这么简单,你学会了吗?

© 著作权归作者所有

dreamsfly

dreamsfly

粉丝 32
博文 6
码字总数 12763
作品 3
郑州
CTO(技术副总裁)
私信 提问
加载中

评论(1)

dreamsfly
dreamsfly
可加入群17375149,进行学校讨论
八问WebSocket协议:为你快速解答WebSocket热门疑问

本文由“小姐姐养的狗”原创发布于“小姐姐味道”公众号,原题《WebSocket协议 8 问》,收录时有优化和改动。感谢原作者的分享。 一、引言 WebSocket是一种比较新的协议,它是伴随着html5规范...

JackJiang2011
04/25
0
0
认识HTML5的WebSocket

在HTML5规范中,我最喜欢的Web技术就是正迅速变得流行的WebSocket API。WebSocket提供了一个受欢迎的技术,以替代我们过去几年一直在用的Ajax技术。这个新的API提供了一个方法,从客户端使用...

进击的程序员
2013/06/21
0
1
认识HTML5的WebSocket 认识HTML5的WebSocket

在HTML5规范中,我最喜欢的Web技术就是正迅速变得流行的WebSocket API。WebSocket提供了一个受欢迎的技术,以替代我们过去几年一直在用的Ajax技术。这个新的API提供了一个方法,从客户端使用...

大道至簡
2012/02/29
0
1
八问WebSocket协议:为你快速解答WebSocket热门疑问

一、引言 WebSocket是一种比较新的协议,它是伴随着html5规范而生的,虽然还比较年轻,但大多主流浏览器都已经支持。它使用方面、应用广泛,已经渗透到前后端开发的各种场景中。 对http一问一...

首席大胸器
04/25
0
0
好程序员带你认识HTML5中的WebSocket

好程序员带你认识HTML5中的WebSocket,在HTML5 规范中,我最喜欢的Web技术就是正迅速变得流行的 WebSocket API。WebSocket 提供了一个受欢迎的技术,以替代我们过去几年一直在用的Ajax技术。...

好程序员IT
04/17
0
0

没有更多内容

加载失败,请刷新页面

加载更多

0.01-Win10安装linux子系统

一、安装Debian子系统 -1、控制面板设置: -1.1、打开“控制面板” —— “程序” —— “启用或关闭Windows功能” —— 勾选 “适用于Linux的Windows子系统” -2、设置: -2.1、打开“设置”...

静以修身2025
昨天
2
0
init 0-6 (启动级别:init 0,1,2,3,4,5,6)

启动级别: init 0,1,2,3,4,5,6 这是个很久的知识点了,只是自己一直都迷迷糊糊的,今天在翻出来好好理解下。。 0: 停机 1:单用户形式,只root进行维护 2:多用户,不能使用net file system...

圣洁之子
昨天
2
0
Android Camera HAL浅析

1、Camera成像原理介绍 Camera工作流程图 Camera的成像原理可以简单概括如下: 景物(SCENE)通过镜头(LENS)生成的光学图像投射到图像传感器(Sensor)表面上,然后转为电信号,经过A/D(模数转...

天王盖地虎626
昨天
2
0
聊聊Elasticsearch的ProcessProbe

序 本文主要研究一下Elasticsearch的ProcessProbe ProcessProbe elasticsearch-7.0.1/server/src/main/java/org/elasticsearch/monitor/process/ProcessProbe.java public class ProcessProb......

go4it
昨天
3
0
mysql PL(procedure language)流程控制语句

在MySQL中,常见的过程式SQL语句可以用在存储体中。其中包括IF语句、CASE语句、LOOP语句、WHILE语句、ITERATE语句和LEAVE语句,它们可以进行流程控制。 IF语句相当于Java中的if()...else if(...

edison_kwok
昨天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部