欢迎关注我的B站账号:卍卍子非鱼卍卍
网络通信
InetAddress
InetAddress.getLocalHost()
返回本地主机的InetAddress对象
host.getHostName()
获取主机名
host.getHostAddress()
获取主机ip地址
使用以上方法可能会抛出UnknownHostException
异常,表示主机不存在
InetAddress host;
try {
host = InetAddress.getLocalHost();
String hostname = host.getHostName();
String ip = host.getHostAddress();
} catch(UnknownHostException e) {
e.printStackTrace();
}
实例
下面的实例实现了客户端与服务器端的通信,客户端接收用户输入的字符串传递给服务器端,服务器端读取字符串,显示在终端上并返回给客户端,客户端接收到服务器端发来的字符串同样显示在终端上,双方接收到".QUIT"时结束通信
客户端
import java.net.*;
import java.io.*;
public class ClientTest {
public static void main(String[] args) {
try {
Socket client = new Socket("127.0.0.1", 8001); // 建立连接,ip地址127.0.0.1,端口号8001
System.out.println("连接已建立");
DataInputStream in = new DataInputStream(client.getInputStream()); // 建立输入流
DataOutputStream out = new DataOutputStream(client.getOutputStream()); // 建立输出流
String line = "";
while (!line.equalsIgnoreCase(".QUIT")) {
System.out.println("输入消息:");
line = readLine();
System.out.println("正在向服务器发送数据");
out.writeUTF(line);
System.out.println("正在等待服务器响应数据");
line = in.readUTF();
System.out.println("接收数据:" + line);
}
in.close(); // 关闭输入流
out.close(); // 关闭输出流
client.close(); // 关闭连接
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
public static String readLine() {
String str = "";
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
try {
str = in.readLine();
} catch (Exception e) {
System.out.println(e.getMessage());
}
return str;
}
}
服务器端
import java.net.*;
import java.io.*;
public class ServerTest {
public static void main(String[] args) {
try {
ServerSocket server = new ServerSocket(8001); // 建立服务,监听端口号8001
System.out.println("服务已建立于端口" + server.getLocalPort());
while (true) {
Socket connection = server.accept(); // 此时接收到客户端的连接请求,建立连接
System.out.println("连接已建立");
DataInputStream in = new DataInputStream(connection.getInputStream()); // 建立输入流
DataOutputStream out = new DataOutputStream(connection.getOutputStream()); // 建立输出流
String line = "";
while (!line.equalsIgnoreCase(".QUIT")) {
line = in.readUTF();
System.out.println("服务器接收数据:" + line);
out.writeUTF(line);
}
in.close(); // 关闭输入流
out.close(); // 关闭输出流
connection.close(); // 关闭连接
}
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
}