面试题答案
一键面试客户端
- 创建Socket对象:
- 关键方法:
Socket(String host, int port)
或Socket(InetAddress address, int port)
。 - 作用:尝试连接到指定主机(通过主机名或IP地址)的指定端口。例如
Socket socket = new Socket("127.0.0.1", 12345);
,这行代码会创建一个客户端Socket,并尝试连接到本地地址(127.0.0.1)的12345端口。
- 关键方法:
- 获取输入输出流:
- 关键方法:
getInputStream()
和getOutputStream()
。 - 作用:
getInputStream()
用于获取从服务器端接收数据的输入流,getOutputStream()
用于获取向服务器端发送数据的输出流。例如,InputStream inputStream = socket.getInputStream();
和OutputStream outputStream = socket.getOutputStream();
,这样就可以通过输入流读取服务器发送的数据,通过输出流发送数据给服务器。
- 关键方法:
- 通信操作:
- 关键方法:根据输入输出流类型(如
DataInputStream
、DataOutputStream
等相关类的读写方法)。例如DataOutputStream
的writeUTF(String str)
方法用于向输出流写入UTF编码的字符串,DataInputStream
的readUTF()
方法用于从输入流读取UTF编码的字符串。 - 作用:实现客户端与服务器端的数据交互。
- 关键方法:根据输入输出流类型(如
- 关闭连接:
- 关键方法:
close()
。 - 作用:关闭Socket连接,释放相关资源。例如
socket.close();
,关闭客户端Socket,确保不再占用网络资源。
- 关键方法:
服务器端
- 创建ServerSocket对象:
- 关键方法:
ServerSocket(int port)
。 - 作用:在指定端口上监听客户端的连接请求。例如
ServerSocket serverSocket = new ServerSocket(12345);
,这行代码会在12345端口监听客户端连接。
- 关键方法:
- 接受客户端连接:
- 关键方法:
accept()
。 - 作用:阻塞等待客户端连接,一旦有客户端连接,返回一个新的Socket对象用于与该客户端进行通信。例如
Socket clientSocket = serverSocket.accept();
,clientSocket
就是与连接上来的客户端进行通信的Socket。
- 关键方法:
- 获取输入输出流:
- 关键方法:同客户端,
getInputStream()
和getOutputStream()
。 - 作用:获取与客户端通信的输入输出流,以便读取客户端发送的数据和向客户端发送数据。
- 关键方法:同客户端,
- 通信操作:
- 关键方法:同客户端,根据输入输出流类型(如
DataInputStream
、DataOutputStream
等相关类的读写方法)。 - 作用:实现服务器端与客户端的数据交互。
- 关键方法:同客户端,根据输入输出流类型(如
- 关闭连接:
- 关键方法:
close()
。 - 作用:关闭与客户端的连接Socket和ServerSocket(如果不再需要监听新连接)。例如
clientSocket.close();
关闭与客户端的连接,serverSocket.close();
关闭服务器端监听的Socket。
- 关键方法: