Anda di halaman 1dari 6

package client_server;

import java.awt.Dimension; import java.awt.GridLayout; import java.awt.Point; import java.awt.Toolkit; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.Socket; import java.net.UnknownHostException;

import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JTextField; import javax.swing.SwingUtilities;

public class EchoClient extends JFrame {

Socket socket; PrintWriter in; BufferedReader out;

JLabel responseLabel; JTextField requestText; JButton submitBtn;

static int w = 100; static int h = 200;

public EchoClient() { setPreferredSize(new Dimension(w, h)); setVisible(true); setLayout(null); setDefaultCloseOperation(EXIT_ON_CLOSE); center(); addComponents(); connect(); pack(); }

void addComponents() { setLayout(new GridLayout(3, 1)); responseLabel = new JLabel(); add(responseLabel); requestText = new JTextField(); add(requestText); submitBtn = new JButton("Submit");

submitBtn.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { in.println(requestText.getText()); try { responseLabel.setText(out.readLine()); } catch (IOException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } } }); add(submitBtn); }

void connect() { // 127.0.0.1 ili localhost try { // klijent se ovim pozivom kaci na server, tj. socket se vraca u // momentu kada prodje accept sa strane servera socket = new Socket("localhost", 10001); // pravi se duplex za komunikaciju in = new PrintWriter(socket.getOutputStream(), true); out = new BufferedReader(new InputStreamReader( socket.getInputStream())); } catch (UnknownHostException e) {

// TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } }

private void center() { Dimension d = Toolkit.getDefaultToolkit().getScreenSize(); int x = (int) (d.getWidth() - w) / 2; int y = (int) (d.getHeight() - h) / 2; setLocation(new Point(x, y)); }

public static void main(String[] args) { SwingUtilities.invokeLater(new Runnable() {

@Override public void run() { EchoClient gui = new EchoClient(); } }); } }

package client_server;

import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.ServerSocket; import java.net.Socket;

public class EchoServer {

ServerSocket servSocket; Socket socket; PrintWriter in; BufferedReader out;

public EchoServer() { try { //ServerSocket je rasporedjivac konekcija, sluzi da prihvati klijenta i dodeli mu Socket servSocket=new ServerSocket(10001); //prihvatanje klijenta i dodeljivanje socketa za konekciju. accept je blokirajuca naredba socket = servSocket.accept(); System.out.println("Klijent zakacen: "+socket); //duplex komunikacija: server pise na in, sto se preusmerava na klijentov out, i obrnuto, serverov out je ono sto klijent pise

in = new PrintWriter(socket.getOutputStream(),true); out = new BufferedReader(new InputStreamReader(socket.getInputStream())); //ova verzija servera radi sa samo jednim klijentom, jer se samo jednom uradi accept while(true){ //u beskonacnoj petlji ucitavamo klijentski request String reqString = out.readLine(); //i odgovaramo in.println("Response: "+reqString); } } catch (IOException e) { try { servSocket.close(); } catch (IOException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } e.printStackTrace(); } }

public static void main(String[] args) { EchoServer server = new EchoServer(); } }

Anda mungkin juga menyukai