package pack1;
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
@SuppressWarnings("serial")
public class ClientGui extends JFrame {
SimpleClient client;
private JScrollPane scrollPane;
private JTextArea text;
private JTextField inputField;
public ClientGui() {
super("Client");
setDefaultCloseOperation(EXIT_ON_CLOSE);
init();
setPreferredSize(new Dimension(500, 400));
pack();
setLocationRelativeTo(null);
setVisible(true);
client = new SimpleClient(this);
client.sendMess("hello");
}
private void init() {
text = new JTextArea();
text.setEditable(false);
scrollPane = new JScrollPane(text);
add(scrollPane);
inputField = new JTextField();
inputField.addKeyListener(new KeyListener() {
public void keyPressed(KeyEvent e) {
if (e.getKeyCode() == KeyEvent.VK_ENTER) {
client.sendMess(inputField.getText());
inputField.setText("");
}
}
public void keyReleased(KeyEvent e) {
}
public void keyTyped(KeyEvent e) {
}
});
add(inputField, BorderLayout.SOUTH);
}
public static void main(String[] args) {
new ClientGui();
}
public void addBoardMess(String mess) {
text.append(mess + "\n");
text.setCaretPosition(text.getText().length());
}
}
...................................
package pack1;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
public class MultiServer {
private ServerGui gui;
public MultiServer(ServerGui g) throws IOException {
gui = g;
ServerSocket serverSocket = null;
try {
serverSocket = new ServerSocket(9999);
} catch (IOException e) {
// System.err.println("Could not listen on port: 9999.");
gui.writeMess("Could not listen on port: 9999.");
System.exit(-1);
}
// System.out.println("wait for clients");
gui.writeMess("wait for clients");
while (true) {
try {
Socket clientSocket = serverSocket.accept();
gui.writeMess("new client connected");
new ServerClientThread(clientSocket, gui);
} catch (Exception e) {
e.printStackTrace();
break;
}
}
serverSocket.close();
}
}
.....................
package pack1;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
public class ServerClientThread extends Thread {
private ServerGui gui;
private Socket socket = null;
public ServerClientThread(Socket socket, ServerGui g) {
gui = g;
this.socket = socket;
start();
}
public void run() {
// System.out.println("start new client thread");
gui.writeMess("start new client thread");
try {
PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
BufferedReader in = new BufferedReader(new InputStreamReader(socket
.getInputStream()));
String inputLine;
while (true) {
try {
inputLine = in.readLine();
gui.writeMess("input from client : " + inputLine);
out.println("[" + inputLine + "]");
if (inputLine.compareToIgnoreCase("bye") == 0) {
// System.out.println("client went off");
gui.writeMess("client went off");
break;
}
} catch (Exception e) {
// System.out.println("client diconnected");
gui.writeMess("client diconnected");
break;
}
}
out.close();
in.close();
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
...................................
package pack1;
import java.awt.Dimension;
import java.io.IOException;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
@SuppressWarnings("serial")
public class ServerGui extends JFrame {
private JTextArea text;
private JScrollPane scrollPane;
public ServerGui() {
super("Server");
setDefaultCloseOperation(EXIT_ON_CLOSE);
init();
setPreferredSize(new Dimension(500, 400));
pack();
setLocationRelativeTo(null);
setVisible(true);
try {
// new SimpleServer(this);
new MultiServer(this);
} catch (IOException e) {
// e.printStackTrace();
writeMess("Error : " + e.getMessage());
}
}
private void init() {
text = new JTextArea();
text.setEditable(false);
scrollPane = new JScrollPane(text);
add(scrollPane);
}
public void writeMess(String mess) {
text.append(mess + "\n");
text.setCaretPosition(text.getText().length());
}
public static void main(String[] args) {
new ServerGui();
}
}
.....................................
package pack1;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException;
public class SimpleClient extends Thread {
Socket echoSocket = null;
PrintWriter out = null;
BufferedReader in = null;
private ClientGui gui;
public SimpleClient(ClientGui g) {
gui = g;
try {
echoSocket = new Socket("localhost", 9999);
out = new PrintWriter(echoSocket.getOutputStream(), true);
in = new BufferedReader(new InputStreamReader(echoSocket
.getInputStream()));
start();
} catch (UnknownHostException e) {
System.err.println("Could not connect to server");
System.exit(1);
} catch (IOException e) {
System.err.println("Couldn't get I/O for server conection.");
System.exit(1);
}
}
public static void main(String[] args) throws IOException {
// while ((userInput = stdIn.readLine()) != null) {
//
// try {
//
// out.println(userInput);
//
// System.out.println(in.readLine());
//
// if (userInput.compareToIgnoreCase("bye") == 0) {
//
// break;
//
// }
//
// } catch (Exception e) {
//
// System.out.println("connection losed: " + e.getMessage());
//
// break;
//
// }
//
// }
}
public void close() {
try {
out.close();
in.close();
echoSocket.close();
} catch (IOException e) {
// TODO
e.printStackTrace();
}
}
public void sendMess(String mess) {
out.println(mess);
}
@Override
public void run() {
try {
while (true) {
String inline = in.readLine();
if (inline != null && inline.length() > 0) {
//TODO
gui.addBoardMess(inline);
}
try {
Thread.sleep(200);
} catch (InterruptedException e) {
// e.printStackTrace();
}
}
} catch (IOException e) {
// e.printStackTrace();
gui.addBoardMess("connection closed");
}
}
}
Niciun comentariu:
Trimiteți un comentariu