IP 地址所对应的对象
Java 提供了一个类,可以获取与 IP 地址相关的一些值,这里见的列举常用的方法,代码如下:
InetAddress localHost = InetAddress.getLocalHost();
System.out.println(localHost);
InetAddress byName = InetAddress.getByName("MacBook-Pro.local");
System.out.println(byName);
InetAddress byName1 = InetAddress.getByName("192.168.0.105");
System.out.println(byName1);
InetAddress byName2 = InetAddress.getByName("www.baidu.com");
System.out.println(byName2);
System.out.println(byName2.getHostAddress());
System.out.println(byName2.getHostName());
代码输出如下图:
InetAddress
TCP 服务端
在网络编程中典型的模式是 C/S 模式,C 是客户端,S 是服务端。
顾名思义,服务端是为客户端提供的服务的,因此服务端始终保持一个工作状态,而客户端是随着客户的意愿而发起的,当客户访问服务器,由服务器为客户进行服务,服务完毕后客户端就与服务端断开连接。
通常服务端会监听一个端口,等待客户端的请求,当客户端的请求到达后,服务端就可以和客户端进行通信了。
服务端的代码如下:
public static void main(String[] args) throws IOException {
// 创建 ServerSocket 对象
ServerSocket serverSocket = new ServerSocket(10000);
// 获取服务端的套接字对象
Socket server = serverSocket.accept();
// 接收客户端的输入
// 获取输入流对象
InputStream inputStream = server.getInputStream();
byte[] buf = new byte[1024];
int length = inputStream.read(buf);
System.out.println("客户端传输的数据是:" + new String(buf, 0, length));
// 返回客户端数据
OutputStream outputStream = server.getOutputStream();
outputStream.write("你好,收到".getBytes());
// 关闭流对象
outputStream.close();
inputStream.close();
server.close();
serverSocket.close();
}
TCP 客户端
客户端会去通过 IP 地址与 端口号 去连接指定的服务器,当连接到服务器以后就可以进行通信了,代码如下:
public static void main(String[] args) throws IOException {
// 创建客户端的套接字
Socket client = new Socket("127.0.0.1", 10000);
// 向外进行输出
// 获取输出流对象
OutputStream outputStream = client.getOutputStream();
// 输出数据
outputStream.write("hello java".getBytes());
// 接收服务端返回的消息
InputStream inputStream = client.getInputStream();
byte[] buf = new byte[1024];
int length = inputStream.read(buf);
System.out.println("服务端的相应数据:" + new String(buf, 0, length));
// 关闭操作
inputStream.close();
outputStream.close();
client.close();
}
以上便是一个简单的基于 TCP 的简单的网络编程。
微信中搜索 “码农UP2U” 关注我的公众号吧!!!
网友评论