Клиент через сервер нажатием на кнопку должен отправлять сообщение другому клиенту. Но по факту при нажатии на кнопку ничего не происходит. Ошибок никаких не выдает. Вероятно, я что-то делаю абсолютно неправильно. Вопрос в том, что именно.
Сервер:
Код:
import java.net.*;
import java.io.*;
public class Server {
public static void main(String[] args) throws IOException, InterruptedException {
ServerSocket serverSocket = new ServerSocket(9000);
int count=0;
while(true) {
Socket clientSocketOne = serverSocket.accept();
System.out.println("Client number " + (++count)+" IS connected");
OutputStreamWriter WriterOne =
new OutputStreamWriter(
clientSocketOne.getOutputStream());
BufferedReader ReaderOne =
new BufferedReader(
new InputStreamReader(
clientSocketOne.getInputStream()));
Socket clientSocketTwo = serverSocket.accept();
System.out.println("Client number " + (++count)+" IS connected");
System.out.print("Message: ");
OutputStreamWriter WriterTwo =
new OutputStreamWriter(
clientSocketTwo.getOutputStream());
BufferedReader ReaderTwo =
new BufferedReader(
new InputStreamReader(
clientSocketTwo.getInputStream()));
String line = ReaderOne.readLine();
System.out.println(line);
WriterTwo.write(line);
WriterTwo.flush();
WriterOne.close();
ReaderOne.close();
clientSocketOne.close();
WriterTwo.close();
ReaderTwo.close();
clientSocketTwo.close();
}
//serverSocket.close()
}
}
Первый клиент, нажатием на jButton1 должен отправлять сообщение из jTextArea1 второму клиенту:
Код:
import java.net.*;
import java.io.*;
import java.util.Scanner;
public class FrameClient1 extends javax.swing.JFrame {
static ServerSocket serverSocket;
static Socket clientSocket;
OutputStreamWriter writer;
BufferedReader reader;
public FrameClient1() {
initComponents();
}
@SuppressWarnings("unchecked")
//Generated Code
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
Scanner scan = new Scanner(System.in);
try{
while (jTextArea1.getText() != null){
scan.next(jTextArea1.getText());
}
reader =
new BufferedReader(
new InputStreamReader(
clientSocket.getInputStream()));
writer =
new OutputStreamWriter(
clientSocket.getOutputStream());
writer.write(scan.next()+"\n");
writer.flush();
writer.close();
reader.close();
}catch(IOException e){};
try{
clientSocket.close();
}catch(IOException e){};
}
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
//Look and feel setting code
/* Create and display the form */
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new FrameClient1().setVisible(true);
}
});
try{
Socket clientSocket = new Socket(
"127.0.0.1", 9000);
}
catch(IOException e){};
}
// Variables declaration - do not modify
private javax.swing.JButton jButton1;
private javax.swing.JLabel jLabel1;
private javax.swing.JScrollPane jScrollPane1;
private static javax.swing.JTextArea jTextArea1;
// End of variables declaration
}
Второй клиент, должен принимать сообщение:
Код:
import java.net.*;
import java.io.*;
public class FrameClient2 extends javax.swing.JFrame {
static ServerSocket serverSocket;
static Socket clientSocket;
public FrameClient2() {
initComponents();
}
@SuppressWarnings("unchecked")
//Generated Code
/**
* @param args the command line arguments
*/
public static void main(String args[]) throws IOException{
//Look and feel setting code
/* Create and display the form */
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new FrameClient2().setVisible(true);
}
});
try {
Socket clientSocket = new Socket("127.0.0.1", 9000);
OutputStreamWriter writer =
new OutputStreamWriter(
clientSocket.getOutputStream());
BufferedReader reader =
new BufferedReader(
new InputStreamReader(
clientSocket.getInputStream()));
String msg = reader.readLine();
jTextArea1.append(msg);
writer.close();
reader.close();
clientSocket.close();
}
catch(IOException e){};
}
// Variables declaration - do not modify
private javax.swing.JLabel jLabel1;
private javax.swing.JScrollPane jScrollPane1;
private static javax.swing.JTextArea jTextArea1;
// End of variables declaration
}