java - 如何使我的聊天应用程序连续运行?
问题描述
我必须制作一个能够在服务器和客户端之间连续来回聊天的聊天应用程序。我有它,以便服务器和客户端一次可以发送一条消息,但我不确定如何编辑我的代码以便一次发送多条消息。此外,我需要能够在两台单独的计算机上运行它,并且我认为我已经为此准确设置了代码,但我不确定。对此进行验证并回答第一个问题将不胜感激。我的每个班级的代码如下。
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner;
public class ChatServer{
private ServerSocket serverSocket;
private Socket acceptSocket;
private PrintStream output;
private BufferedReader input;
private Scanner scan = new Scanner(System.in);
public static void main(String[] args) {
ChatServer server = new ChatServer();
server.run();
}
public void run() {
try {
serverSocket = new ServerSocket(9999);
acceptSocket = serverSocket.accept();
output = new PrintStream(acceptSocket.getOutputStream());
input = new BufferedReader(new InputStreamReader(acceptSocket.getInputStream()));
while(acceptSocket.isConnected()) {
String message = input.readLine();
System.out.println(message);
String reply = scan.nextLine();
output.println(reply);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
import java.io.BufferedReader;
import java.io.IOException;
import java.io.PrintStream;
import java.io.InputStreamReader;
import java.net.Socket;
import java.util.Scanner;
public class ChatClient{
private Socket clientSocket;
private BufferedReader input;
private PrintStream output;
private Scanner scan = new Scanner(System.in);
public static void main(String[] args) {
ChatClient client = new ChatClient();
client.run();
}
public void run() {
try {
clientSocket = new Socket("127.0.0.1", 9999);
output = new PrintStream(clientSocket.getOutputStream());
output.println("Connected to Server");
input = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
while(clientSocket.isConnected()) {
String message = input.readLine();
System.out.println(message);
String reply = scan.nextLine();
output.println(reply);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
解决方案
SocketIO for Java 是我的建议。它可以完成您需要的工作,最终可能会减少代码,并且它的文档非常棒,有很多示例。甚至还有一个用于点对点聊天的 Android 应用演示。
推荐阅读
- python - 如何使电报键盘按钮发出命令?
- alfresco - 如何使用 CMIS 创建带有标签的文档
- unity3d - 滑动屏幕时ListView项目值发生变化..Unity
- influxdb - 无法在包含测量的 influxDB 点上创建 Grafana 动态仪表板
- ruby-on-rails - has_many through association dependent error is still referenced in table users
- wordpress - How get the language, which current user set in his profile?
- hyperledger-fabric - hyperledger fabric: "peer" not recognized during channel creation & joining - first network
- .htaccess - Redirect index.php with parameters to a folder and remove parameters using htaccess
- laravel - How to fetch specific value first then ascending order using Laravel Elequent?
- node.js - Is await bcrypt.hash() the same as bcrypt.hashSync()?