【发布时间】:2015-04-27 13:10:46
【问题描述】:
我正在尝试自己实现一个客户端-服务器应用程序。到目前为止,它的工作原理是,当我通过另一个应用程序(例如 Web 浏览器)访问端口时,服务器应用程序被阻塞。
如果连接的应用程序是“客户端应用程序”,是否有任何简单的方法/良好做法来检查?
这是一个监听端口 8080 的套接字的简短示例。套接字等待 2 个字符串。如果您现在使用浏览器 (localhost:8080) 连接,则连接已建立,但正在等待第一个 UTF8。
public class MainSocket {
public static void main(String[] args) {
ServerSocket serverSocket;
try {
serverSocket = new ServerSocket(8080);
while (true) {
try {
Socket clientSocket = serverSocket.accept();
System.out.println("Connection established");
DataInputStream in = new DataInputStream(clientSocket.getInputStream());
System.out.println(in.readUTF());
System.out.println(in.readUTF());
in.close();
clientSocket.close();
} catch (Exception e) {
e.printStackTrace();
}
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
【问题讨论】:
-
DataInputStream 设计用于读取 binary 数据,而不是文本。我建议使用众多 Reader 实现中的一种来阅读文本。