Итак, я только что узнал, как сделать socket
с и все эти хорошие вещи в Java, и поэтому моя первая попытка получила сообщение от клиента, а затем сбой клиента. То, что должно было случиться, было получить сообщение от клиента, если это сообщение равно этому, затем отправить данные обратно. Однако функция if
, если сообщение было правильным, не сработала, даже если сообщение было правильным.
Даже когда я удаляю функцию if
, чтобы проверить, была ли строка правильной или нет, программа все равно зависает. И, кстати, мой сервер - это консольное приложение, а мой клиент - приложение SWT.
Вот код сервера с удаленной функцией if
:
try {
System.out.println("Waiting for a connection...");
// Start a server
ServerSocket server = new ServerSocket(3211);
// Listen for anyone at that port
Socket socket = server.accept();
System.out.println("The client has connected!");
// Get the data being sent in
DataInputStream inputStream = new DataInputStream(new BufferedInputStream(socket.getInputStream()));
DataOutputStream ouputStream = new DataOutputStream(socket.getOutputStream());
// Turn that into UTF-8
String data = inputStream.readUTF();
System.out.println("Received " + data);
ouputStream.writeUTF("Great!");
System.out.println("Awesome!");
socket.close();
inputStream.close();
ouputStream.close;
server.close();
System.out.println("Socket closed\n-----------------------------");
}
catch(IOException e) {
System.out.println(e);
}
И клиент (который срабатывает при нажатии кнопки):
try {
allMessagesTextBox.setText(allMessagesTextBox.getText() + "\nConnecting to the server...");
Socket socket = new Socket("192.168.1.206", 3211);
allMessagesTextBox.setText(allMessagesTextBox.getText() + "\nConnected to the server!");
DataInputStream input = new DataInputStream(System.in);
DataOutputStream output = new DataOutputStream(socket.getOutputStream());
output.writeUTF("sweet");
String data = input.readUTF();
allMessagesTextBox.setText(allMessagesTextBox.getText() + "\nSERVER: " + data);
input.close();
output.close();
socket.close();
}
catch (IOException er) {
allMessagesTextBox.setText(allMessagesTextBox.getText() + "\n" + er);
}
Как только я нажимаю кнопку, чтобы попытаться установить соединение (с уже запущенным сервером), клиент мгновенно зависает. Он даже не отправляет какие-либо вещи типа «подключение к серверу».
Есть идеи, что происходит и как это исправить?