cs代码改BS
哪位大侠帮我把下面的CS代码改成BS的
代码工作的原理就是SOCKET接收数据后刷新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)
{
Sockelisten();
}
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;
GridView.Invoke(SM); //这一句代码在CS中是会报错的
Thread.Sleep(1000);
}
}
[解决办法]
B/S和C/S的工作原理是不一样的,你的这个Socket目前是无法实现,或者说技术上不太成熟的,你浏览器所看到的所有内容,都是执行在服务器端,并将结果html返回的。你看到的只是呈现而已
既然要改成BS架构的,那么就要从思维和观念上先改变,CS操作的本地机器的内容,所以你监听端口也好等等操作,这些资源都是可控的,而BS的所有操作,其实都是将请求发送到服务器端,由服务端执行。
你还是首先了解下B/S的情况吧
[解决办法]
+1
[解决办法]
为什么不用ajax定时去轮询呢?
[解决办法]
setTimeout( "ajax请求" , 1000 );
ajax请求:$.ajax.....
[解决办法]
放个TIMER 定时刷吧
[解决办法]
也就是上面几楼说的,使用ajax定时刷新,不断请求,以模拟服务器的推送功能。我以前做BS是,经常使用AjaxPro来出来Ajax的,其他的都是js的写法,只要简单了解下AjaxPro的用法,就OK了
http://www.cnblogs.com/lexus/archive/2007/11/29/977281.html
这个AjaxPro的教程,是比较简单的,很容易的,你操作下,或者直接在项目中使用也可以,JS方面就看你的基础了,不行在了解学习下js。
还是那句话,改变思想,你做的是B/S,而不是C/S
[解决办法]
ajax局部刷新技术可以解决你的问题
[解决办法]
ajax长轮询
[解决办法]
顶贴,记得给分哦,亲。
[解决办法]
