专业的JAVA编程教程与资源

网站首页 > java教程 正文

java中网络编程(一)(java语言的网络编程分为哪几个层次)

temp10 2024-09-10 21:02:39 java教程 18 ℃ 0 评论

一、ip地址

java中网络编程(一)(java语言的网络编程分为哪几个层次)

在网络中每台计算机都必须有一个的IP地址;

32位,4个字节,常用点分十进制的格式表示,例如:192.168.1.100

127.0.0.1 是固定ip地址,代表当前计算机,相当于面向对象里的 "this"

二、端口

两台计算机进行连接,总有一台服务器,一台客户端。

服务器和客户端之间的通信通过端口进行。如图:

ip地址是 192.168.1.100的服务器通过端口 8080

与ip地址是192.168.1.189的客户端 的1087端口通信

三、获取本机ip地址

import java.net.InetAddress;

public class NetTest {

public static void main(String[] args) {

try {

//获取InetAddress对象

InetAddress ir = InetAddress.getLocalHost();

//获取本机ip地址

String addr = ir.getHostAddress();

//获取本机的名称

String name = ir.getHostName();

String addr1 = ir.toString();

System.out.println(addr);

System.out.println(name);

System.out.println(addr1);

} catch (Exception e) {

e.printStackTrace();

}

}

}

测试结果:

四、ping命令

使用ping判断一个地址是否能够到达

ping不是java的api,是windows中的一个小工具,用于判断一个地址的相应时间

如图

ping 192.168.229.1可以返回这个地址的响应时间 time<1ms表示很快,局域网一般就是这个响应时间

ping 192.168.229.2 返回“请求超时”表示时间较久都没有响应返回,基本判断这个地址不可用

五、使用java 执行ping命令

借助 Runtime.getRuntime().exec() 可以运行一个windows的exe程序

如图,使用java运行 ping 192.168.229.1,返回这样的字符串

代码如下:

import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStreamReader;

public class TestSocket {

public static void main(String[] args) throws IOException {

Process p = Runtime.getRuntime().exec("ping " + "192.168.229.1");

BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream(), "gbk"));

String line = null;

StringBuilder sb = new StringBuilder();

while ((line = br.readLine()) != null) {

if (line.length() != 0)

sb.append(line + "\r\n");

}

System.out.println("本次指令返回的消息是:");

System.out.println(sb.toString());

}

}

注意:由于从dos窗口执行ping命令获取的字节流默认是gbk的编码,而eclipse的默认编码方式是utf-8,因此我获取流时解码的方式必须指定为gbk,否则eclipse控制台输出的结果会是乱码!

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表