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提供数据支持,看了网上相关大片的资料也 ...
随机推荐
- 01--SQLite学习网站参考
1. SQLite基本操作 见我的02—SQLite一步到位 sqlite3编程笔记 . http://blog.csdn.net/wl_haanel/article/details/623141 ...
- html5——拖拽
基本情况 在HTML5的规范中,我们可以通过为元素增加draggable="true"来设置此元素是否可以进行拖拽操作,其中图片.链接默认是开启的. 拖拽元素 页面中设置了drag ...
- servlet-响应信息
package servlet; import java.io.IOException; import javax.servlet.ServletException; import javax.ser ...
- (转)分布式文件存储FastDFS(六)FastDFS多节点配置
http://blog.csdn.net/xingjiarong/article/details/50759918 前面几篇关于FastDFS的博客中介绍了如何在一台机器上搭建一个简易的FastDFS ...
- 创建全局函数 匹配查找 std::map
std::map<CString, CString> m_NameToType; 所有文件之外声明一个函数 在要用到的地方 加入存储的东西 extern std::map<CStr ...
- listcontrol 加combobox
之前写过一篇(list Control实现单元格编辑)文章,那篇文章不是很完善执行的时候有时会出错,这篇文章经过完善后还加入了Combo Box功能! 这里我就只是晒一下我的代码; 头文件: // L ...
- NGINX+PHP-FPM7 FastCGI sent in stderr: “Primary script unknown”
https://www.cnblogs.com/hjqjk/p/5651275.html 一开始是Nginx打开网页显示一直是拒绝访问.查看nginx日志是报错显示我的题目,然后就各种搜索解决啊! 百 ...
- Cashier (codeforces 1059A)
题目倒是不难注意第一个时间段可能不是从零开始的,所以注意第一个时间的开始节点与零之间可能存在休息的时间 还有这个题我打的时候一直谜之RE......发现原来bool函数忘记写return了.....以 ...
- 【hdu 2036】改革春风吹满地
[题目链接]:http://acm.hdu.edu.cn/showproblem.php?pid=2036 [题意] 中文题 [题解] 这里用的是叉积对应的求三角形的面积; 即 A×B=A*B*sin ...
- redis学习五,redis集群搭建及添加主从节点
redis集群 java架构师项目实战,高并发集群分布式,大数据高可用,视频教程 在redis3.0之前,出现了sentinel工具来监控各个Master的状态(可以看上一篇博客).如果Master异 ...