我的网站是一个socket的server端。。因为我需要启动网站就开始监听socket端。我把启动serversocket写在了application_start中,调试的时候是可以与client连接以及通信的。但是因为我需要取得server端接收到的数据。 但是因为application_start是只启动一次,我取到的值一直都是最初的值,那我应该要用怎么样的思路才可以完成这样的工作呢?谢谢大家急等啊。。
解决方案 »
- 问一个问题,也许你们也会遇到过!
- 正则表达式的问题,在线等
- 请教下asp.net下如何才能在脚本控制打印属性
- 请教一段js的代码·可以给高分
- |M| 一个DIV如何因定在浏览器的最上面 不要让我们看到他有浮动过程 麻烦大家看看 搞了一下午都搞不好
- 名称“FormatType”在类或命名空间“ASP.Default1_aspx”中不存在
- 脚本(VBscript)中怎样定义全局变量(作用放范围:所在页面)
- 页面传值到底出错在那里?
- 请教各位高手一个问题
- DataTime 不要00:00:00
- 怎样实现在asp页面的textbox中按回车执行按钮事件
- 怎么在JS中 判断用户控件中的textbox有没有填写
实在是困恼。
或者这个不写在application_start中。。我要实现的是一次启动,然后就是监听,取得数据包,返回显示到页面上。
session存第一个值 定时获取session来更新页面上的信息 在显示。
恩。我在application_start中启动了一个线程来运行sever。我想取得client 发送到server的数据包data1.server端其实已经接收到数据了,可是我该如何取到这个数据包呢?我用application["data"]来保存线程中返回的data1.可是这个值不会有变化。我第一次启动的时候,application["data"]会有改变一次,但是之后的client发送过来的数据就无法保存到application["data"]中了
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using ServerSocket;
using System.Xml.Linq;
using System.Xml;/// <summary>
///Class2 的摘要说明
/// </summary>
public class Class2:BusinessHandler
{
static string ee = "我是ee";
private ServerSocket.ServerSocket serversocket;
private List<StateObject> states;
XmlDocument xmlDom = new XmlDocument();
public Class2()
{
serversocket = new ServerSocket.ServerSocket("127.0.0.1", 8888, this);
serversocket.BeginListenAndAccept(20);
states = new List<StateObject>();
}
public bool AcceptCallbackHandler(StateObject state)
{
states.Add(state);
return true;
} public void DisconnectCallbackHandler(StateObject state)
{
states.Remove(state);//移除states中的用户信息
serversocket.Disconnect(state);//断开state的socket连接
} public void ErrorHandler(Exception exception, StateObject state, string msg)
{
} public bool ReceiveCallbackHandler(StateObject state)
{
string receivedata = state.GetReceiveData();
string rece = "NO";
ee = receivedata;
XDocument xdoc = XDocument.Parse(receivedata);
XElement xe = xdoc.Root;
if (xe.Name == "login")
{
state.obj = xe.Value;
}
else if (xe.Name == "speak")
{
XAttribute att_sourcename = xe.Attribute("source");
rece = "<speak source=\"" + att_sourcename.Value + "\">" + xe.Value + "</speak>";
foreach (StateObject sta in states)
{
serversocket.Send(sta, rece);
}
}
return true;
}
public string returnstring()
{
return ee;
}
public void SendCallbackHandler(StateObject state)
{
}
}
这是我的class2.cs 文件的内容,class2类
里面写了监听client的方法
<script runat="server">
static string s = "我是s";
void Application_Start(object sender, EventArgs e)
{
Class2 c2 = new Class2();
s = c2.returnstring();//返回当前server端接收到client端发送过来的数据
Application["data"] = s;
}
这里是我global.asax文件中有做修改的地方
这样我运行系统后。。application["data"]的值会是"我是ee" 即使client端由发送数据。还是不会改变application["data"]的值我应该如何解决呢?
谢谢大家了!!
我在application_start 中初始化class2类。之后传递 application["h"]l来传递