MST

星途 面试题库

面试题:Java网络编程之Socket基础

在Java网络编程中,简述Socket的基本概念以及使用Socket进行简单的客户端和服务器端通信的步骤。
19.2万 热度难度
编程语言Java

知识考点

AI 面试

面试题答案

一键面试

Socket基本概念

Socket(套接字)是一种通信机制,用于在不同主机间进行进程通信。它提供了一种网络通信的端点,使得不同主机上的应用程序能够通过网络进行数据传输。Socket通常被看作是应用层与传输层之间的接口,基于传输层协议(如TCP或UDP)来实现数据的可靠传输或快速传输。

使用Socket进行简单的客户端和服务器端通信步骤(以TCP为例)

  1. 服务器端
    • 创建ServerSocket对象:指定服务器监听的端口号,例如:
ServerSocket serverSocket = new ServerSocket(12345);
- **监听客户端连接**:调用`serverSocket.accept()`方法,该方法会阻塞直到有客户端连接到服务器,返回一个新的`Socket`对象用于与客户端通信,例如:
Socket clientSocket = serverSocket.accept();
- **获取输入输出流**:通过`clientSocket`获取`InputStream`和`OutputStream`,用于读取客户端发送的数据和向客户端发送数据,例如:
InputStream inputStream = clientSocket.getInputStream();
OutputStream outputStream = clientSocket.getOutputStream();
- **数据交互**:使用输入输出流进行数据的读写操作,例如读取客户端发送的字符串:
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
String message = reader.readLine();
向客户端发送字符串:
PrintWriter writer = new PrintWriter(outputStream, true);
writer.println("Hello, client!");
- **关闭连接**:通信结束后,关闭`Socket`和`ServerSocket`,释放资源,例如:
clientSocket.close();
serverSocket.close();
  1. 客户端
    • 创建Socket对象:指定服务器的IP地址和端口号,尝试连接服务器,例如:
Socket socket = new Socket("127.0.0.1", 12345);
- **获取输入输出流**:与服务器端类似,通过`socket`获取`InputStream`和`OutputStream`,例如:
InputStream inputStream = socket.getInputStream();
OutputStream outputStream = socket.getOutputStream();
- **数据交互**:使用输入输出流进行数据的读写操作,例如向服务器发送字符串:
PrintWriter writer = new PrintWriter(outputStream, true);
writer.println("Hello, server!");
读取服务器发送的字符串:
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
String message = reader.readLine();
- **关闭连接**:通信结束后,关闭`Socket`,释放资源,例如:
socket.close();