C# SuperWebSocket服务端、客户端学习(三)
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 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;
{
public partial class Form1 : Form
{
/// <summary>
///2016-8-2 服务器打开及接受消息
/// </summary>
///
{
Port = 2015,//set the listening port
MaxConnectionNumber = 10000
};
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
if (!appServer.Setup(serverConfig)) //Setup the appServer
{
System.Windows.Forms.MessageBox.Show("开启服务器失败");
return;
}
{
System.Windows.Forms.MessageBox.Show("开启服务器失败");
return;
}
//注册事件
appServer.NewSessionConnected += appServer_NewSessionConnected;//客户端连接
appServer.NewMessageReceived += appServer_NewMessageReceived;//客户端接收消息
appServer.SessionClosed += appServer_SessionClosed;//客户端关闭
}
{
//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.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;
{
public partial class Form1 : Form
{
private WebSocket websocket = null;
private string strSendText = string.Empty;
public Form1()
{
InitializeComponent();
}
{
websocket = new WebSocket("ws://127.0.0.1:2015");
WebSocketHelper.get().setWebSocket(websocket);
websocket.Closed += websocket_Closed;
websocket.MessageReceived += websocket_MessageReceived;
websocket.Open();
}
{
//this.listBox1.Invoke(new EventHandler(ShowMessage), e.Message);
MessageReceivedEventArgs responseMsg = (MessageReceivedEventArgs)e; //接收服务端发来的消息
string strMsg = responseMsg.Message;
}
{
this.listBox1.Items.Add(sender.ToString());
}
{
//websocket.Send("一个客户端 下线");
}
{
//websocket.Send("一个客户端 上线");
}
{
//strSendText = textBox1.Text.ToString();
//websocket.Send(strSendText);
WebSocketRequestHelper.get().Register("18630635489", "123456");
}
}
C# SuperWebSocket服务端、客户端学习(三)的更多相关文章
- [精华][推荐]CAS SSO单点登录服务端客户端学习
1.通过下载稳定版本的方式下载cas的相关源码包,如下: 直接选择4.2.1的稳定代码即可 2.我们项目中的版本版本使用maven apereo远程库去下载 通过远程maven库下载cas-serve ...
- TCP/IP网络编程之基于UDP的服务端/客户端
理解UDP 在之前学习TCP的过程中,我们还了解了TCP/IP协议栈.在四层TCP/IP模型中,传输层分为TCP和UDP这两种.数据交换过程可以分为通过TCP套接字完成的TCP方式和通过UDP套接字完 ...
- TCP/IP网络编程之基于TCP的服务端/客户端(一)
理解TCP和UDP 根据数据传输方式的不同,基于网络协议的套接字一般分为TCP套接字和UDP套接字.因为TCP套接字是面向连接的,因此又称为基于流(stream)的套接字.TCP是Transmissi ...
- 手写内网穿透服务端客户端(NAT穿透)原理及实现
Hello,I'm Shendi. 这天心血来潮,决定做一个内网穿透的软件. 用过花生壳等软件的就知道内网穿透是个啥,干嘛用的了. 我们如果有服务器(比如tomcat),实际上我们在电脑上开启了服务器 ...
- TCP/IP网络编程之基于TCP的服务端/客户端(二)
回声客户端问题 上一章TCP/IP网络编程之基于TCP的服务端/客户端(一)中,我们解释了回声客户端所存在的问题,那么单单是客户端的问题,服务端没有任何问题?是的,服务端没有问题,现在先让我们回顾下服 ...
- 看懂 游戏《Minecraft》的崩溃报告 服务端/客户端
如何看懂Minecraft报错的关键信息. 让你如何看懂Minecraft报错 前言 一些俏皮话 寻找崩溃日志 打开崩溃日志 重要的事说三遍 下载文本编辑器 开始分析 深度分析 得出结论 修复报错 解 ...
- 服务端&客户端注册进Eureka
目录 服务端(接口提供方) 创建项目 导入Eureka客户端POM 启动类添加注解 配置YML 暴漏接口 启动服务 集群 配置成功后页面如下 客户端(接口调用方) 修改Yml文件 配置类 启动类添加注 ...
- react服务端/客户端,同构代码心得
FKP-REST是一套全栈javascript框架 react服务端/客户端,同构代码心得 作者:webkixi react服务端/客户端,同构代码心得 服务端,客户端同构一套代码,大前端的梦想, ...
- 基于JAX-WS的Web Service服务端/客户端 ;JAX-WS + Spring 开发webservice
一.基于JAX-WS的Web Service服务端/客户端 下面描述的是在main函数中使用JAX-WS的Web Service的方法,不是在web工程里访问,在web工程里访问,参加第二节. JAX ...
- JAVA WEBSERVICE服务端&客户端的配置及调用(基于JDK)
前言:我之前是从事C#开发的,因公司项目目前转战JAVA&ANDROID开发,由于对JAVA的各种不了解,遇到的也是重重困难.目前在做WEBSERVICE提供数据支持,看了网上相关大片的资料也 ...
随机推荐
- [Android]异常8-android.view.WindowManager$BadTokenException
背景:Service服务中使用WindowManager时,Android4.4使用正常,Android6.0使用应用崩溃停止运行,提示android.view.WindowManager$BadTo ...
- JS高级——缓存原理
缓存的原理 1.就是将常用的数据存储起来,提供便利,减少查询次数和所消耗的事件 2.利用作用的原理所产生的数据库:非关系型数据库(内存型数据库) MongoDB.Redis等 3.还有网站静态页面缓存 ...
- CSS——行高
浏览器默认文字大小:16px 行高:是基线与基线之间的距离 行高=文字高度+上下边距 一行文字行高和父元素高度一致的时候,垂直居中显示. <!DOCTYPE html> <html& ...
- 六时车主 App iOS隐私政策
本应用尊重并保护所有使用服务用户的个人隐私权.为了给您提供更准确.更有个性化的服务,本应用会按照本隐私权政策的规定使用和披露您的个人信息.但本应用将以高度的勤勉.审慎义务对待这些信息.除本隐私权政策另 ...
- highcharts 组合chart
/** *制作 复杂的组合型的 charts * *@param [options] 图表的默认配置 *@dependence jQuery.highcharts *@author wch */ fu ...
- JavaScript定时器及其他
By Abyssly Jun 20 2014 Updated:Jun 20 2014 平时工作中不可避免地要嵌套网页,对JavaScript的深入了解还是很有必要滴.而JavaScript中一个容易让 ...
- 微信开发配置JSSDK,注入权限验证,以及invalid signature签名错误解决
在微信开发中很多功能都要用到微信JSSDK,关于JSSDK的使用,微信官方的文档已经比较详细,一定要仔细去看文档. <script src="https://res.wx.qq.com ...
- 使用super实现类的继承
查看一个类继承了哪些类可以用__bases__方法查看 class People: def __init__(self,name,age,sex): self.name=name self.ag ...
- HashMap中capacity、loadFactor、threshold、size等概念的解释
约定 约定前面的数组结构的每一个格格称为桶 约定桶后面存放的每一个数据称为bin bin这个术语来自于JDK 1.8的HashMap注释. size size表示HashMap中存放KV的数量(为链表 ...
- Gorgeous Sequence 题解 (小清新线段树)
这道题被学长称为“科幻题” 题面 事实上,并不是做法科幻,而是“为什么能这么做?”的解释非常科幻 换句话说,复杂度分析灰常诡异以至于吉如一大佬当场吃书 线段树维护的量:区间和sum,区间最大值max1 ...