1、打开VS2012,新建一个windows窗体程序,选择.NET4.0版本

2、添加引用

SuperSocket的dll文件(

SuperSocket.Common.dll,

SuperSocket.SocketBase.dll,

SuperSocket.SocketEngine.dll)到此项目的引用 (版本选4.0)

SuperWebSocket.dll   到此项目的引用

添加 系统:
System.Configuration;

System.Configuration.Install;  到此项目的引用

3、具体代码实现如下所示(由于项目的特殊性,不能完全展示出来,请见谅):

(1)服务器端:

using SuperSocket.SocketBase.Config;
using SuperWebSocket;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
 
namespace ServerSuperWebSocket
{
    public partial class Form1 : Form
    {
        /// <summary>
        ///2016-8-2  服务器打开及接受消息
        /// </summary>
        ///
 
        private WebSocketServer appServer = new WebSocketServer();
      
        ServerConfig serverConfig = new ServerConfig
        {
            Port = 2015,//set the listening port
            MaxConnectionNumber = 10000
        };
 
        public Form1()
        {
            InitializeComponent();
        }
 
       // private WebSocketServer appServer = WebSocketHelper.get().getAppServer(); //封装之后添加的
        private void Form1_Load(object sender, EventArgs e)
        {
            if (!appServer.Setup(serverConfig)) //Setup the appServer
            {
                System.Windows.Forms.MessageBox.Show("开启服务器失败");
                return;
            }
 
            if (!appServer.Start())//Try to start the appServer
            {
                System.Windows.Forms.MessageBox.Show("开启服务器失败");
                return;
            }
            //注册事件
            appServer.NewSessionConnected += appServer_NewSessionConnected;//客户端连接
            appServer.NewMessageReceived += appServer_NewMessageReceived;//客户端接收消息
            appServer.SessionClosed += appServer_SessionClosed;//客户端关闭
        }
 
        void appServer_NewSessionConnected(WebSocketSession session)
        {
            //session.Send("连接成功");
            StringBuilder strBuilder = new StringBuilder();
            strBuilder.Append("连接成功:" + "\n");
            strBuilder.Append("Host:" + session.Host + ";");//服务器的ip
            strBuilder.Append("Uri:" + session.UriScheme + ";");
            strBuilder.Append("Path:" + session.Path + ";");
            strBuilder.Append("CurrentToken:" + session.CurrentToken + ";");
            strBuilder.Append("SessionID:" + session.SessionID + ";");
            strBuilder.Append("Connection" + session.Connection + ";");
            strBuilder.Append("Origin" + session.Origin + ";");
            strBuilder.Append("LocalEndPoint" + session.LocalEndPoint + ";");
            strBuilder.Append("RemoteEndPoint" + session.RemoteEndPoint);
      
        }
        void appServer_NewMessageReceived(WebSocketSession session, string message)
        {
            session.Send("服务端收到了客户端发来的消息");
            //这里判断接收消息
            //session.Send(message);//将消息发送到客户端
           // SessionResponse.get().InitResponseJsonData(message);  //解析数据(将数据保存到数据库中)
            //WebSocketHelper.get().setWebSocketSession(session); //将这个session传给session
            //调用发送消息的类
           // SessionRequest.get().sendUserInfo();
 
        }
        void appServer_SessionClosed(WebSocketSession session, SuperSocket.SocketBase.CloseReason value)
        {
            sessionManager.Remove(session.SessionID.ToString());
            session.Close();
        }
    }
}

(2)客户端(同样需要建立windows程序)

程序如下:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using WebSocket4Net;
 
namespace ClientSuperWebSocket
{
    public partial class Form1 : Form
    {
        private WebSocket websocket = null;
        private string strSendText = string.Empty;
        public Form1()
        {
            InitializeComponent();
        }
 
        private void Form1_Load(object sender, EventArgs e)
        {
            websocket = new WebSocket("ws://127.0.0.1:2015");
            WebSocketHelper.get().setWebSocket(websocket);
 
            websocket.Opened += websocket_Opened;
            websocket.Closed += websocket_Closed;
            websocket.MessageReceived += websocket_MessageReceived;
            websocket.Open();
        }
 
        private void websocket_MessageReceived(object sender, MessageReceivedEventArgs e)
        {
            //this.listBox1.Invoke(new EventHandler(ShowMessage), e.Message);
            MessageReceivedEventArgs responseMsg = (MessageReceivedEventArgs)e; //接收服务端发来的消息
            string strMsg = responseMsg.Message;
        }
 
        private void ShowMessage(object sender, EventArgs e)
        {
            this.listBox1.Items.Add(sender.ToString());
        }
 
        private void websocket_Closed(object sender, EventArgs e)
        {
            //websocket.Send("一个客户端 下线");
        }
 
        void websocket_Opened(object sender, EventArgs e)
        {
            //websocket.Send("一个客户端 上线");
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            //strSendText = textBox1.Text.ToString();
            //websocket.Send(strSendText);
            WebSocketRequestHelper.get().Register("18630635489", "123456");
        }
 
    }
}

C# SuperWebSocket服务端、客户端学习(三)的更多相关文章

  1. [精华][推荐]CAS SSO单点登录服务端客户端学习

    1.通过下载稳定版本的方式下载cas的相关源码包,如下: 直接选择4.2.1的稳定代码即可 2.我们项目中的版本版本使用maven apereo远程库去下载 通过远程maven库下载cas-serve ...

  2. TCP/IP网络编程之基于UDP的服务端/客户端

    理解UDP 在之前学习TCP的过程中,我们还了解了TCP/IP协议栈.在四层TCP/IP模型中,传输层分为TCP和UDP这两种.数据交换过程可以分为通过TCP套接字完成的TCP方式和通过UDP套接字完 ...

  3. TCP/IP网络编程之基于TCP的服务端/客户端(一)

    理解TCP和UDP 根据数据传输方式的不同,基于网络协议的套接字一般分为TCP套接字和UDP套接字.因为TCP套接字是面向连接的,因此又称为基于流(stream)的套接字.TCP是Transmissi ...

  4. 手写内网穿透服务端客户端(NAT穿透)原理及实现

    Hello,I'm Shendi. 这天心血来潮,决定做一个内网穿透的软件. 用过花生壳等软件的就知道内网穿透是个啥,干嘛用的了. 我们如果有服务器(比如tomcat),实际上我们在电脑上开启了服务器 ...

  5. TCP/IP网络编程之基于TCP的服务端/客户端(二)

    回声客户端问题 上一章TCP/IP网络编程之基于TCP的服务端/客户端(一)中,我们解释了回声客户端所存在的问题,那么单单是客户端的问题,服务端没有任何问题?是的,服务端没有问题,现在先让我们回顾下服 ...

  6. 看懂 游戏《Minecraft》的崩溃报告 服务端/客户端

    如何看懂Minecraft报错的关键信息. 让你如何看懂Minecraft报错 前言 一些俏皮话 寻找崩溃日志 打开崩溃日志 重要的事说三遍 下载文本编辑器 开始分析 深度分析 得出结论 修复报错 解 ...

  7. 服务端&客户端注册进Eureka

    目录 服务端(接口提供方) 创建项目 导入Eureka客户端POM 启动类添加注解 配置YML 暴漏接口 启动服务 集群 配置成功后页面如下 客户端(接口调用方) 修改Yml文件 配置类 启动类添加注 ...

  8. react服务端/客户端,同构代码心得

    FKP-REST是一套全栈javascript框架   react服务端/客户端,同构代码心得 作者:webkixi react服务端/客户端,同构代码心得 服务端,客户端同构一套代码,大前端的梦想, ...

  9. 基于JAX-WS的Web Service服务端/客户端 ;JAX-WS + Spring 开发webservice

    一.基于JAX-WS的Web Service服务端/客户端 下面描述的是在main函数中使用JAX-WS的Web Service的方法,不是在web工程里访问,在web工程里访问,参加第二节. JAX ...

  10. JAVA WEBSERVICE服务端&客户端的配置及调用(基于JDK)

    前言:我之前是从事C#开发的,因公司项目目前转战JAVA&ANDROID开发,由于对JAVA的各种不了解,遇到的也是重重困难.目前在做WEBSERVICE提供数据支持,看了网上相关大片的资料也 ...

随机推荐

  1. 如何防止SQL注入式攻击

    一.什么是SQL注入式攻击?  所谓SQL注入式攻击,就是攻击者把SQL命令插入到Web表单的输入域或页面请求的查询字符串,欺骗服务器执行恶意的SQL命令.在某些表单中,用户输入的内容直接用来构造(或 ...

  2. SQL基本操作——HAVING

    HAVING:在 SQL 中增加 HAVING 子句原因是,WHERE 关键字无法与合计函数一起使用. 我们拥有下面这个 "Orders" 表: O_Id OrderDate Or ...

  3. android studio 控件提示大写

    方法一: 在第一行找到File进入找到setting,找到code completion 右侧复选框 选择-->None—->ok 方法二:<item name="andr ...

  4. php用户注册常用检测、写入

    // 判断数据库是否已经存在 $check_sql = "select * from user where idNumber='$idNumber'"; $check_query ...

  5. ProE常用曲线方程:Python Matplotlib 版本代码(蝴蝶曲线)

    花纹的生成可以使用贴图的方式,同样也可以使用方程,本文列出了几种常用曲线的方程式,以取代贴图方式完成特定花纹的生成. 注意极坐标的使用................. 前面部分基础资料,参考:Pyt ...

  6. 5.C#编写Redis访问类

    那么通过前面几篇博文,服务端的安装和配置应该没什么问题了,接下来的问题是如何通过代码来访问Redis. 这里我们使用的库为: StackExchange.Redis GitHub:https://gi ...

  7. java 类名.this

    类名为this的限定词. 相对于内部类:有多个this: 1.内部类本身的this: 2.内部类的环境类的this: 类名.this,就是为了对这些this指针的指向做出限定. 区别于类名.class ...

  8. 关于img的一个小知识点

    这两天在撸代码的时候发现图片的最下面总是会留一条空白,刚开始不知道为什么,但是UI拿刀对我说去掉它,瑟瑟发抖的我找了下原因及解决方案. 原因:img 是一个inline-block标签,而这个标签的v ...

  9. 阅读《JavaScript设计模式》第三章心得

    简单工厂模式 1.通过类实例化对象创建 传统的用面向对象方法去创建很多类去实现某些功能不妥当,这样不仅占用的很多类名称,而且别人使用这些方法的同时要记住每个类的名字,所以这样不适合团队开发,所以我们可 ...

  10. enote笔记语言(5)——其他

    章节:其他   ((主:单词))                               用来醒目地强调这个句子中哪个词语作主语 sentence:                         ...