luni, 3 septembrie 2012

MinichatMaiSimplu


package pack;

import javax.swing.*;

import java.io.*;
import java.net.*;

class ClientWorker implements Runnable {
private Socket client;
private JTextArea textArea;

ClientWorker(Socket client, JTextArea textArea) {
this.client = client;
this.textArea = textAarea;
}

public void run() {
String line;
BufferedReader in = null;
PrintWriter out = null;
try {
in = new BufferedReader(new InputStreamReader(
client.getInputStream()));
out = new PrintWriter(client.getOutputStream(), true);
} catch (IOException e) {
System.out.println("in or out failed");
System.exit(-1);
}

while (true) {
try {
line = in.readLine();
out.println(line);
textArea.append("\n");
textArea.append(line);
} catch (IOException e) {
System.out.println("Read failed");
System.exit(-1);
}
}
}
}
package pack;

import java.awt.Color;

import java.awt.BorderLayout;
import java.awt.event.*;
import javax.swing.*;

import java.io.*;
import java.net.*;


class MultiServer extends JFrame {

/**
*/
private static final long serialVersionUID = 1L;
JLabel label = new JLabel("Text received over socket:");
JPanel panel;
JTextArea textArea = new JTextArea();
ServerSocket server = null;

MultiServer() { 
panel = new JPanel();
panel.setLayout(new BorderLayout());
panel.setBackground(Color.white);
getContentPane().add(panel);
panel.add("North", label);
panel.add("Center", textArea);

public void listenSocket() {
try {
server = new ServerSocket(4444);
} catch (IOException e) {
System.out.println("Could not listen on port 4444");
System.exit(-1);
}
while (true) {
ClientWorker w;
try {
w = new ClientWorker(server.accept(), textArea);
Thread t = new Thread(w);
t.start();
} catch (IOException e) {
System.out.println("Accept failed: 4444");
System.exit(-1);
}
}
}

protected void finalize() {
// Objects created in run method are finalized when
// program terminates and thread exits
try {
server.close();
} catch (IOException e) {
System.out.println("Could not close socket");
System.exit(-1);
}
}

public static void main(String[] args) {
MultiServer frame = new MultiServer();
frame.setTitle("Server Program");
WindowListener l = new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
};
frame.addWindowListener(l);
frame.pack();
frame.setVisible(true);
frame.listenSocket();
}
}
package pack;

import java.awt.Color;
import java.awt.BorderLayout;
import java.awt.event.*;
import javax.swing.*;

import java.io.*;
import java.net.*;

class SocketClient extends JFrame implements ActionListener {

/**
*/
private static final long serialVersionUID = 1L;
JLabel text, clicked;
JButton button;
JPanel panel;
JTextField textField;
Socket socket = null;
PrintWriter out = null;
BufferedReader in = null;
JTextArea textArea = new JTextArea() ;

SocketClient() {

text = new JLabel("Text to send over socket:");
textField = new JTextField(20);
button = new JButton("Click Me");
button.addActionListener(this);


panel = new JPanel();
panel.setLayout(new BorderLayout());
panel.setBackground(Color.white);
getContentPane().add(panel);
panel.add("North", text);
panel.add("Center", textField);
panel.add("South", button);
panel.add("East", textArea);
}

public void actionPerformed(ActionEvent event) {
Object source = event.getSource();

if (source == button) {
String text = textField.getText();

out.println(text);
textField.setText(new String(""));

try {
String line = in.readLine();
textArea.append(line+"\n");
System.out.println("Text received :" + line);
} catch (IOException e) {
System.out.println("Read failed");
System.exit(1);
}
}
}

public void listenSocket() {

try {
socket = new Socket("localhost", 4444);
out = new PrintWriter(socket.getOutputStream(), true);
in = new BufferedReader(new InputStreamReader(socket
.getInputStream()));
} catch (UnknownHostException e) {
System.out.println("Unknown host: localhost");
System.exit(1);
} catch (IOException e) {
System.out.println("No I/O");
System.exit(1);
}
}

public static void main(String[] args) {
SocketClient frame = new SocketClient();
frame.setTitle("Client Program");
WindowListener l = new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
};

frame.addWindowListener(l);
frame.pack();
frame.setVisible(true);
frame.listenSocket();
}
}

Niciun comentariu:

Trimiteți un comentariu