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 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)); }
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 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(); } }