`
jakartom
  • 浏览: 43931 次
  • 性别: Icon_minigender_1
  • 来自: 洛阳
最近访客 更多访客>>
社区版块
存档分类
最新评论

java和本机网络连接的问题

阅读更多

1.通过WINAPI的InternetGetConnectedState来获得本机是否连上Internet网.

2.通过WINAPI的InternetGetConnectedStateEx来获得详细信息,msdn上的说明有误

BOOL InternetGetConnectedStateEx( __out LPDWORD lpdwFlags, __out LPTSTR lpszConnectionName, __in DWORD dwNameLen, __in DWORD dwReserved );  msdn上说第一个参数返回本机用什么类型的链接,如LAN或者RAS,第二个返回链接的名称,对于LAN连接来说是错的,返回的不是连接的名称而是连接的类型,如LAN连接,并不是在网络邻居->属性里看到的连接名称,但是对于拨号连接或RAS连接,如ADSL,VPN,返回的确实是连接的名称,并且是用来可连上Inet网的连接的名称,第三个参数是用来存放连接名称的字符串的长度,第四个参数总是0.

3.在JAVA中通过socket的bind,注意不是serversocket的bind,判断不出是用哪个本地连接连上的,当在socket的构造函数中指定

了本地IP和port后,会出现bind的Exception.

4.在取本地的连接名称时,查找WINAPI找不到,通过网络知道可以采用,WinExec("cmd.exe /c ipconfig /all > d:\\result.tmp", SW_HIDE);的方法,cmd.exe /c 是在执行结束后关闭cmd窗口的意思,并且这样重定向到了文本文件中,可以在java中继续处理.

5,网络上说的调用wininetAPI 来设置网络连接的PROXY的方法,适合于LAN连接,或已经知道用哪个连接连上了Internet的方法,

可通过 InternetGetConnectedStateEx来判断,如果返回LAN连接,设置代理时直接输入NULL代替连接名,如果是拨号的RAS连接

包括ADSL,VPN,则可以直接从此函数得到名称.

6.VC6.0的wininet.h中无 InternetGetConnectedStateEx得头函数声明,因此必须采用VS2005,Vs2008中的头文件,在VS2005,VS2008中开发,否则只拷贝头文件还会出错.

 

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics