按钮时间调用一个socket  发送一条命令服务器接受这条命令 运行

解决方案 »

  1.   

    你web 和 winform 有用到数据库么?
    如果用了,通过改变 数据库表中的某一字段状态state  如 1 客户端执行重启,0 就不执行。执行命令都通过 winform 来运行,web 里面只是改变数据状态
      

  2.   

    那个BUTTON是在ASP.NET的页面上,你的意思是ASP.NET程序里调用 一个SOCKET是么?
      

  3.   


    最能想到的简单的就是指令存放数据库。其他好像不太现实
    winform做成服务跟随计算机启动 然后定时器监控数据库字段 做响应的操作
      

  4.   

    有用到数据库的,那WINFORM要不停的检测数据库的字段值呀?
      

  5.   

    有用到数据库的,那WINFORM要不停的检测数据库的字段值呀?
    间隔5分钟检索一次对数据库基本没丝毫影响的
      

  6.   

    这种需求太简单了,我只出解决方案一:在ASP.NET程序里,新建一个【简单处理程序】,比如GetProgress.ashx,你定义一个publick的静态类,注意,必须是静态类,类里面包含一个集合,最好是键/值对的集合。比如List<string> listOfKey ;然后,你在ASP.NET与WinForm两者间约定好密钥,一一对应在ASP.NET上操作时,请求GetProgress.ashx,把相应的【密钥】和【指令】保存到listOfKey在WinForm上,弄个定时器,每隔10分钟或者更短时间,就请求一次GetProgress.ashx,请求的时候记得带上约定的【密钥】,然后,GetProgress.ashx会根据【密钥】,从静态类里的集合中获取到相应的【指令】(如果该密钥存在的话),并返回,记得返回密钥后,要移除集合里的相应【密钥】,以便 于下次再使用。说明:C#开发的WinForm是能够直接请求GetProgress.ashx的,具体请百度一下,至于GetProgress.ashx返回值时,WinForm上能否正常接收,这倒是个问题,我还没测试过,因为我之前是中间多了一层WCF中转服务,所以,楼主自己慢慢测试,如果不行,就加一层中介WCF来服务于数据交换呗这个解决方案的关键点是利用【静态类】在C#中是全局变量的本质,它随程序生而生,死而死,全局共用,不管多少用户从哪个角落访问,都共用这个数据,这也是区别seesion的地方。不过楼主要注意,该静态类虽然是全局,但是,它会随ASP.NET程序的死亡而死亡,所以,IIS那,请配置ASP.NET程序的闲置时间久一些,默认是15分钟,要不然,打个比方,你这边ASP.NET页面发指令后,把该指令保存到集合中,但等了10分钟,另一边的WinForm都还没来访问获取(定时器设置时间间隔为15分钟或以上的情况),那有可能的后果是IIS觉得ASP.NET程序没人访问在,闲着也是闲,Windows操作系统自身的资源分配算法,会让IIS把该ASP.NET给挂起,暂停,以致造成集合里的指令丢失所以,要么就是设置WinForm定时器的时间间隔短一些,要么就是配置IIS的该网站的闲置时间久一些这样
      

  7.   

    我做过类似的东西也是web与winform的 用的就是笨的办法 如同三楼 虽然很笨 但是还是很不错的 虽然做不到时时监测 但是可以间隔几分钟 select一下数据库
      

  8.   

    socket,webserver,用同一个数据库
      

  9.   

    socket  \、 鉴于楼主2分高分,请尽快前来自首!
      

  10.   

    别这样好吧,最后20分了,我的全部家档楼主啊,要知道,没分没动力啊,没分没人回答,所以,你有事没事,就来论坛YYJJ,见贴就回复,不管对不对,只要不要错得离谱就成,这样你的分一天至少收入100多以上吧
      

  11.   

    LZ 知道Web socket不同样也可以点击按钮触发服务器,服务器在后台发送socket命令
      

  12.   

    http://www.cnblogs.com/wishyouhappy/p/3734269.html 这里给LZ一篇websocket的文章,只能帮你到这里了
      

  13.   

    2个办法 我来整理下..第一种 就是数据库 比如设置某个字段0是关机1是开机.   当然那些电脑不需要刷新..因为ado本身体提了数据库监听的方法.也就是 只要数据库发生了改变会通知的
      
     具体请google SqlDependency第二种就是socket 所有的客户端(你的电脑)都跟服务器建立tcp/ip的连接.   网页 也使用tcpclient给服务器发送数据 服务器接收到之后 根据命令的类型解析出来你要给某个电脑关机
      
     然后把相关命令发送给相关电脑(当然你这电脑也是负责接收东西的)  电脑(客户端)接收到信息之后想干什么都行了.控制桌面发送截图任务管理器随便玩了所以 你的需求 只要弄明白了 不是 很难.很好理解.
      

  14.   

    页面上点击button,把参数传给服务器。现在的问题就是服务器与控制关机的Client的通信问题。不同进程间怎么通信?或许可以使用WebService或者WCF。
      

  15.   

    楼主解决了没有啊,目前也有一个这样的需求,asp.net点击按钮,传一个参数给winform,winform调用自己的方法弹出界面。
    楼上上的方法不知道具体实现,我这个是实时的触发式通信
      

  16.   

    就用socket。asp.net页面发送socket请求。winform端监听端口,收到消息就处理相应操作。
      

  17.   

    .Net remoting
    命名管道 NamedPipeStream
    共享内存 MemoryMappedFile
    socket冷门一点的就用自定义WM消息
    asp中调用PostMessage发送这个消息
    winform中重写wndProc消息处理,判断收到这个消息
    不过由于IIS服务是在隔离的Session0中,asp里获取winform的窗口句柄要绕点弯子