首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

Socket接收数据并绑定给Gridview,该怎么解决

2013-11-21 
Socket接收数据并绑定给Gridview如题实时接收没什么问题,就是刷新绑定gridview老是没有效果。各位大侠给点

Socket接收数据并绑定给Gridview
如题
实时接收没什么问题,就是刷新绑定gridview老是没有效果。各位大侠给点意见 


        private delegate void ShowMsg(string strMsg);
        private ShowMsg SM;
        DataTable dt = new DataTable();
        protected void Page_Load(object sender, EventArgs e)
        {
        SM += new ShowMsg(SetLabel);

        dt.Columns.Add("yvalue", typeof(string));
        dt.Rows.Add();
        }
        private void SetLabel(string strMsg)
        {

            gvOpint.DataSource = dt;
            gvOpint.DataBind();
        }
        protected void Button1_Click1(object sender, EventArgs e)
        {
            Thread td = new Thread(new ThreadStart(Sockelisten));
            td.Start();
        }
        void Sockelisten()
        {

            IPAddress ips = Dns.GetHostAddresses(Dns.GetHostName())[0];
            IPEndPoint ip = new IPEndPoint(IPAddress.Parse("192.168.2.59"), 6666);
            Socket soc = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            soc.Bind(ip);
            soc.Listen(10);
            Socket hander = soc.Accept();
            while (true)
            {
                byte[] bytes = new byte[1024];
                int len = hander.Receive(bytes);
                string st = Encoding.Default.GetString(bytes);
                dt.Rows.Add();
                dt.Rows[dt.Rows.Count - 1][0] = st;

                SM(st);
                
                Thread.Sleep(1000);
            }
        }

[解决办法]
web程序不能这么写的。

得客户端轮询。你这样只会把服务器搞死的。
[解决办法]
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Text;
namespace Webtestdatagridview
{
    public partial class _Default : System.Web.UI.Page
    {
        public static int i = 0;
        public static int j = 0;
        private delegate void ShowMsg(string strMsg);
        private ShowMsg SM;
        static  DataTable dt = new DataTable();
        protected void Page_Load(object sender, EventArgs e)
        {
            if (j == 0)


            {
                 dt.Columns.Add("yvalue", typeof(string));
                dt.Rows.Add();
                j++;
            }
            SM += new ShowMsg(SetLabel);
            
        }
        private void SetLabel(string strMsg)
        {

            GridView1.DataSource = dt;
            GridView1.DataBind();
        }
        void tsetD(int m)
        {
            int i= 0;
            while (i<10)
            {
                if (m == 0)
                {
                    string  st = "dssd"; 
                    dt.Rows.Add();
                    dt.Rows[dt.Rows.Count - 1][0] = st;

                    SM(st);
                    i++;
                }
                else if (m == 1)
                {
                    string st = "aaaa";
                    dt.Rows.Add();
                    dt.Rows[dt.Rows.Count - 1][0] = st;
                    SM(st);
                    i++;
 
                }     
            }
        }

        protected void Button1_Click(object sender, EventArgs e)
        {
            this.tsetD(i);
            i++;
        }

    }
}


我模拟了一下你想达到的效果,是可以实时更新的、、、

热点排行