免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3554 | 回复: 9

指定JAVA程序只使用某个IP与外部网络通信 [复制链接]

论坛徽章:
0
发表于 2009-04-25 17:26 |显示全部楼层
20可用积分
有个问题想跟大家讨论下。

最近有这么一个问题:
在我的一台LINUX服务器上有3块网卡。
一块连内网使用,一块连业务使用,一块做管理使用
IP分别是:  172.17.5.7 连内网
                 192.168.1.2 连业务
                 192.168.1.3 做管理
然后我的服务器上有几个自己写的JAVA程序需要跟外部的服务进行数据交互,我这边的JAVA程序是作为客户端去访问外部的网络,有没有什么办法可以让我的JAVA程序只使用 192.168.1.2这个IP与外部的网络进行数据交互?
对这样的问题有所了解的,请给于一些帮助,谢谢

最佳答案

查看完整内容

package src;import java.io.*;public class getMac {public static void main(String[] args) {try {Process process = Runtime.getRuntime().exec("ipconfig /all");InputStreamReader ir = new InputStreamReader(process.getInputStream());LineNumberReader input = new LineNumberReader(ir);String line;while ((line = input.readLine()) != null)if (line.indexOf("Physical Address") > 0) {String MACAddr = line.subst ...

论坛徽章:
0
发表于 2009-04-25 17:26 |显示全部楼层

回复 #1 helpid 的帖子

package src;

import java.io.*;

public class getMac {
public static void main(String[] args) {
try {
Process process = Runtime.getRuntime().exec("ipconfig /all");
InputStreamReader ir = new InputStreamReader(process
.getInputStream());
LineNumberReader input = new LineNumberReader(ir);
String line;
while ((line = input.readLine()) != null)
if (line.indexOf("Physical Address") > 0) {
String MACAddr = line.substring(line.indexOf("-") - 2);
System.out.println("MAC address = [" + MACAddr + "]");
}
} catch (java.io.IOException e) {
System.err.println("IOException " + e.getMessage());
}
}
}

ipconfig是Windows下命令提示符支持的一个命令,可以查询到你的机器的ip等网络配置

Runtime.getRuntime().exec("ipconfig /all"); 就是执行该命令

if (line.indexOf("Physical Address") > 0)表示如果在line中查找到Physical Address,就继续执行if中的语句,否则如果找不到,line.indexOf("Physical Address")的返回值=-1

请多少给点分,谢谢

http://zhidao.baidu.com/question/79289709.html?fr=qrl

http://snipurl.com/grm1q

论坛徽章:
0
发表于 2009-04-25 21:08 |显示全部楼层
socket bind

论坛徽章:
0
发表于 2009-04-26 21:32 |显示全部楼层
通过什么方式访问外部网络?

BTW:楼上好老呀

论坛徽章:
0
发表于 2009-04-27 00:10 |显示全部楼层
楼上的已是腰缠万贯了还要分干什么  ?!

论坛徽章:
0
发表于 2009-04-27 12:01 |显示全部楼层
java 的API是个好东东,
好好看看socket,会有很大帮助的

论坛徽章:
0
发表于 2009-04-27 12:34 |显示全部楼层

回复 #5 caojiqun 的帖子

帮别人解决问题有种快感。

论坛徽章:
0
发表于 2009-04-27 22:30 |显示全部楼层
原帖由 ziggler 于 2009-4-27 12:34 发表
帮别人解决问题有种快感。

不过,你真的看清楚别人的问题了吗?

论坛徽章:
0
发表于 2009-04-29 13:18 |显示全部楼层
纯java的解决方法,就参考2楼,

Socket s = new Socket();
s.bind(preferIp, preferPort);
s.connect(destIp, destPort);
....


非纯java的方法,你就设置路由策略就可以了

论坛徽章:
0
发表于 2009-04-29 13:32 |显示全部楼层
原帖由 caojiqun 于 2009-4-27 22:30 发表

不过,你真的看清楚别人的问题了吗?

看不懂啊。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP