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 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");
        }
 
    }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM