C# SuperWebSocket服务端、客户端学习(三)
2016-09-04 19:52
786 查看
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");
}
}
}
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# WebSocket 服务端示例代码 + HTML5客户端示例代码
- C#/.net学习-14-一个socket监管客户端与服务端的小demo
- C# SuperWebSocket服务端、客户端学习(三)
- C# SuperWebSocket服务端、客户端学习(三)
- c# websocket 服务端,客户端 兼容低版本IE,支持超长数据传输 附源码
- C# Socket服务端和客户端互相send和receive
- C# socket编程 异步服务端 同步客户端(转)
- (C#:Socket)简单的服务端与客户端通信。
- 黑马程序员学习日记(10)--socket服务端与客户端信息发送(2)
- TCP/IP协议学习(七) 基于C# Socket的Web服务器---动态通讯实现
- 最近在看socket连接,学习了一点适合新手学习,socket客户端和服务端长连接,废话就不多说了,大家看了就明白了
- SuperSocket框架学习笔记3-构建Unity3D__WebSocket4Net客户端程序
- C# Socket聊天程序(一个服务端,多个客户端)
- 最基本的Socket编程(服务端跟客户端通信) C#版
- C# winform socket一个服务端和多个客户端进行通信
- C# Socket编程完成控制台服务器端和web客户端(调试通过)
- C# SOCKET编写的简单聊天通信程序(客户端+服务端)
- C# socket 服务端与客户端通信演示代码
- 黑马程序员<.net学习---Socket 服务端与客户端的交互>
- socket 通信 入门3 android 客户端 C# 服务端