【发布时间】:2011-12-01 04:55:12
【问题描述】:
我一直在为我的网络课程开发一个(相对)简单的 tcp 客户端/服务器聊天程序。我遇到的问题是我正在使用阻塞调用,例如read() 和writeBytes()。因此,每当我尝试向我的服务器发送消息时,服务器不会将其打印出来,直到它回写一个。对于这种情况,使用一个线程输入和一个线程输出是最明智的解决方案,还是使用 NIO 会更好地为我服务?只是为了让您了解我的代码现在的样子,我的服务器是:
ServerSocket welcomeSocket = new ServerSocket(port);
DataOutputStream output;
BufferedReader inFromUser = new BufferedReader( new InputStreamReader(
System.in));
String sentence;
while ((sentence = inFromUser.readLine()) != null) {
Socket connectionSocket = welcomeSocket.accept();
output = new DataOutputStream( connectionSocket.getOutputStream());
output.writeBytes(sentence + "\n");
BufferedReader inFromServer = new BufferedReader( new InputStreamReader(
connectionSocket.getInputStream()));
System.out.println("Client said: " + inFromServer.readLine());
connectionSocket.close();
}
客户端代码基本相同。感谢您的宝贵时间!
【问题讨论】:
标签: java multithreading tcp io nio