WebSocketSharp Clinet接收文件

时间:2019-03-14 11:57:49

标签: c# websocket-sharp

我在C#中使用WebSocketSharp库,但没有找到示例以Windows形式的应用程序在客户端模式下读取数据。 我在控制台模式下尝试了以下代码,这是正确的答案

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using WebSocketSharp;
namespace websocket_client
{
    class Program
    {
        static void Main(string[] args)
        {
            using (var ws = new WebSocket("ws://192.168.1.52:8080/ws/uplink/"))
            {
                ws.OnMessage += (sender, e) =>
               Console.WriteLine("Sensor: " + e.Data);
                ws.Connect();
               // ws.Send("BALUS");
                Console.ReadKey(true);
            }
        }
    }
}

现在,我想连续获取Windows窗体应用程序中的数据。 我怎样才能做到这一点? 我写了如下代码,但是程序不会连续检查网络,它只能运行一次。我在while循环程序中使用的时间不等待新数据,而是将数据存储在重复项中。

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 WebSocketSharp;
using System.Threading;
namespace WEBSOcket_Sharp_V._01
{
    public partial class Form1 : Form
    {
        string strRecieve;
        public Form1()
        {
            InitializeComponent();
        }  

        private void DisplayText(object sender, EventArgs e)
        {
            //textBox2.AppendText(strRecieve);
            txtdata.AppendText("");
            txtdata.AppendText(strRecieve);
        }

        public void Start_WebSocket()
        {
            using (var ws = new WebSocket("ws://192.168.1.52:8080/ws/uplink/"))
            {
                try
                {
                    while (true)
                    {
                        ws.Connect();
                        ws.OnMessage += (sender, e) =>
                        {
                            strRecieve = e.Data;
                            this.Invoke(new EventHandler(DisplayText));
                        };
                    }
                }
                catch
                {
                    MessageBox.Show("error");
                }
              }
        }

        private void button1_Click(object sender, EventArgs e)
        {
            Thread t = new Thread(new ThreadStart(Start_WebSocket));
            t.IsBackground = true;
            t.Start();
        }
    }
}

0 个答案:

没有答案