CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  其他开发语言 >  C# builder

突发奇想--网络连接方面的控制,欢迎讨论指教!

楼主friendyou(anew)2005-02-02 15:34:10 在 其他开发语言 / C# builder 提问

突发奇想,想写一个程序控制windows网络连接拨号!  
  现在我们使用ADSL的时候,只要一登陆就开始计时。而且在计时的过程中,不管我们在浏览网页还是在做什么别的与上网无关的事情,电信公司都在一刻不停的给我们计费,因为我们的网络是连通的只要我们没有手动的把网络断开。我想开发一个程序,在有网络请求的时候自动打开网络连接、拨号...,在网络空闲的时候自动关闭网络连接以节省网络使用时间。这个过程网络的请求速度肯定会受到影响,但是上网时间回大为减少。  
   
  典型案例:  
  上论坛的时候,读贴子的时候系统自动关闭连接,当我们点击下一页的时候,系统自动拨号连通网络,浏览器转入下一页,然后系统再次自动关闭连接节省网络资源!  
   
  希望有兴趣的朋友,谈谈你的看法。  
  初步打算使用C#开发该程序。(因为本人是JAVA程序员,但考虑到Java单机程序运行速度的影响和对windowsAPI的调用,故使用语法与java相近的C#)  
  另外也希望有经验的朋友能够提供一些这方面的资料,比如windows网络拨号函数,如何判断控制网络请求等。  
  初步设想,如果能开发出来,定拿出来与贡献者共享!请大家多多赐教,谢谢! 问题点数:100、回复次数:13Top

1 楼somedummy(某人马甲)回复于 2005-02-02 20:38:07 得分 15

不知道你怎么判断网络是否在被使用?如果通过判断socket状态来检测的话,那么这个软件基本上可以说没有意义了。因为很多服务在没有流量的时候,socket仍然处于established,这样的话,就达不到你的目的了(最糟糕的是现在某些http应用也变成这样了,譬如Server   Push);而不这样判断就强行掐断网络连接的话,可能造成数据传输的中断。  
   
  拨号的API在Windows里面就有,不过我看到的还是非托管的代码,不知道C#怎么搞(混合非托管和托管可以,但是麻烦)。在RSA里面有个  
  DWORD   RasDial(  
      LPRASDIALEXTENSIONS   lpRasDialExtensions,  
      LPCTSTR   lpszPhonebook,  
      LPRASDIALPARAMS   lpRasDialParams,  
      DWORD   dwNotifierType,  
      LPVOID   lpvNotifier,  
      LPHRASCONN   lphRasConn  
  );  
  通过这个函数就可以进行拨号,在msdn.microsoft.com有这个函数的详细解释Top

2 楼somedummy(某人马甲)回复于 2005-02-02 20:40:36 得分 5

ft了,怎么钻到这个胡同里面来了,真远啊Top

3 楼Mackz(在相互)回复于 2005-02-02 22:41:19 得分 5

不是有包月吗?Top

4 楼friendyou(anew)回复于 2005-02-03 10:47:02 得分 0

to     somedummy(某人马甲)   :你说得对,现在拨号的问题基本可以解决,问题的难点在于如何去判断系统是否存在网络请求。  
  希望大家踊跃发言,提出您的看法,谢谢!Top

5 楼qzj(SoldierQ)回复于 2005-02-03 11:07:17 得分 15

Windows的撥號程序有空閒時自動斷開和總是自動撥號的選項的,所以就算你開發出來這樣的程序也不會有市場和較大的實用性,不過作爲學習之用倒不錯,蠻有難度的課題,呵呵。  
   
  另外,買個ADSL路由器就能實現你要的功能,而且不會讓你感覺到撥號的過程,呵呵。Top

6 楼Pinbor(来客心动)回复于 2005-02-03 13:55:53 得分 10

这个创意不错,好好实现是个关键Top

7 楼haoco()回复于 2005-02-03 15:05:14 得分 5

upTop

8 楼yizhixiaozhu(天啦,手都起茧了)回复于 2005-02-05 20:19:42 得分 5

哈哈  
  顶Top

9 楼hedonister(冰戈)回复于 2005-02-15 00:05:00 得分 5

upTop

10 楼flashboy(爱写程序的小绵羊)回复于 2005-02-16 13:16:19 得分 15

这个想法是好的,但是不太可能实现,涉及的东西太多了,我举个例子:  
  某个使用TCP协议的CLIENT程序连接到公网上某台服务器,连上去后,等待服务器发回数据,此时处于阻塞状态,假设当前没有其他网络应用程序,也无流量,所以你的程序此时断开网络。。。。   你想想开,你的CLIENT程序此时会不会报错,因为此时TCP连接断开,RECV肯定会返回错误。   所以你的想法我想只适合那种短连接程序,比如WEB浏览,对于长连接的程序是不好搞的。Top

11 楼friendyou(anew)回复于 2005-02-18 09:14:46 得分 0

我的初衷是想开发出来旨在网页浏览的时候使用,如果能实现这一功能就可以说达到了我的初衷的  
  大家说得很有道理,请继续!  
  Top

12 楼somedummy(某人马甲)回复于 2005-02-18 14:51:45 得分 10

回复人:   flashboy(爱写程序的小绵羊)   (   )   信誉:100     2005-02-16   13:16:00     得分:   0      
     
     
        这个想法是好的,但是不太可能实现,涉及的东西太多了,我举个例子:  
  某个使用TCP协议的CLIENT程序连接到公网上某台服务器,连上去后,等待服务器发回数据,此时处于阻塞状态,假设当前没有其他网络应用程序,也无流量,所以你的程序此时断开网络。。。。   你想想开,你的CLIENT程序此时会不会报错,因为此时TCP连接断开,RECV肯定会返回错误。   所以你的想法我想只适合那种短连接程序,比如WEB浏览,对于长连接的程序是不好搞的。  
   
  =========================================================  
  这个说法站不住脚,因为这种连接程序可以检测所有的socket的状态,这样的话完全可以避免你说的这种情况,udp的还差不多Top

13 楼lovelxj(伊斯人,吾谁与归)回复于 2005-02-27 15:59:39 得分 10

呵呵     这个用来学习是可以  
    但是估计是没有实用的  
    假设这个软件的功能已经实现了预期的效果  
    然后此时我正在一个论坛上面,ADSL已经断开,突然我要看一个页面,这个时候ADSL要重新连接,这个时间就需要不短的时间。  
      估计没有人愿意为了省电钱而多花时间去看沙漏吧。Top

相关问题

  • 突发奇想!
  • 突发奇想与奇思妙想!!!
  • 我的突发奇想。实在没思路,请达人指点。
  • C++ 作用域的问题.突发奇想.求高手解答
  • 突发奇想 有兴趣的来 指纹识别
  • 有关C编译的突发奇想,请高手指教
  • 突发奇想:如果你有两个"小弟弟",你会什么办
  • 今天突发奇想。预备写一个为初学者的asp教程
  • 突发奇想,想投资域名,不知大家有何建议
  • 讨论:并发控制

关键词

  • c#
  • 连接
  • 网络
  • client
  • 函数
  • 服务器
  • 流量
  • adsl
  • 系统
  • 数据

得分解答快速导航

  • 帖主:friendyou
  • somedummy
  • somedummy
  • Mackz
  • qzj
  • Pinbor
  • haoco
  • yizhixiaozhu
  • hedonister
  • flashboy
  • somedummy
  • lovelxj

相关链接

  • CSDN Blog
  • 技术文档
  • 代码下载
  • 第二书店
  • 读书频道

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo