witam,mam problem jak w temacie, mianowicie 2óch klientów podlacza sie do serwera i wysyla miedzu soba wiadomosci, niby dziala, ale wiadomosci nie dochodza :( zamieszczam kod, prosze o pomoc
import java.io.Serializable;
public class Pakiet implements Serializable{
String s;
Boolean gracz=true;
Boolean koniec=false;
public Pakiet(String s, Boolean gracz,Boolean koniec){
this.s=s;
this.gracz=gracz;
this.koniec=koniec;
}
public String toString() {
return super.toString() + " s = " + s + " gracz = " + gracz;
}
}
import java.io.*;
import java.net.*;
public class Serwer {
private ServerSocket Serwer;
private Socket[] klient = new Socket[2];
private int aktualnyGracz = 1;
Pakiet pakiet= new Pakiet(null,false,false);
private boolean koniec = false;
public Serwer() {
try {
this.Serwer = new ServerSocket(3333);
System.out.println("Uruchomiono serwer...");
for (int nr = 0; nr < 2; nr++) {
klient[nr] = Serwer.accept();
System.out.println("Przylaczyl sie gracz nr " + (nr + 1));
klient[nr].getOutputStream().write(nr + 1);
System.out.println("Klient nr" + (nr + 1) + " : " + klient[nr]);
}
while(!koniec) {
ObjectInputStream wejscie = new ObjectInputStream(
klient[aktualnyGracz - 1].getInputStream());
pakiet = (Pakiet) wejscie.readObject();
System.out.println("ODEBRANO paczke od " + aktualnyGracz);
System.out.println(pakiet.s);
if (pakiet.gracz)
aktualnyGracz=2;
if (pakiet.gracz==false)
aktualnyGracz=1;
ObjectOutputStream wyjscie = new ObjectOutputStream(
klient[aktualnyGracz-1].getOutputStream());
wyjscie.writeObject(pakiet);
System.out.println("Wyslano paczkę do " + aktualnyGracz);
System.out.println("------------------------------------");
if (pakiet.s=="koniec") koniec=true;
}
Serwer.close();
System.out.println("Serwer zostal zamkniety");
} catch (Exception e) {
System.out.println("Wystapil blad: " + e);
}
}
public static void main(String[] args) {
Serwer s = new Serwer();
}
}
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.Socket;
import javax.swing.JOptionPane;
/*
* Apl.java
*
* Created on 8 wrzesień 2008, 16:01
*/
/**
*
* @author kisiu3
*/
public class Apl extends javax.swing.JApplet {
/** Initializes the applet Apl */
private Socket klient;
private int nrApletu = 0;
String paka;
Pakiet pakiet = new Pakiet(null, false,false);
Boolean koniec=false;
Boolean gracz=true;
public void init() {
try {
java.awt.EventQueue.invokeAndWait(new Runnable() {
public void run() {
initComponents();
}
});
} catch (Exception ex) {
ex.printStackTrace();
}
try {
String IP = JOptionPane.showInputDialog(null,
"Podaj ip serwera : ", "IP", 1);
if (IP == null)
IP = getCodeBase().getHost();
klient = new Socket(IP, 3333);
nrApletu = klient.getInputStream().read();
if (nrApletu == 1) {
JOptionPane
.showMessageDialog(
this,
"Przyłączyłeś się jako pierwszy, więc rozpoczynasz grę\n"
+ "Twoje pionki są BIAŁE\n"
+ "poczekaj chwilę na zgłosznie się drugiego gracza...",
"Komunikat", JOptionPane.OK_OPTION);
gracz=true;
} else if (nrApletu == 2) {
JOptionPane.showMessageDialog(this,
"Przyłączyłeś się do gry jako drugi,\n"
+ "Twoje pionki są CZARNE\n"
+ "kliknij ok, aby rozpocząć grę ...",
"Komunikat", JOptionPane.OK_OPTION);
gracz=false;
}
} catch (Exception e) {
JOptionPane.showMessageDialog(this,
"Błąd połączenia się z serwerem:\n" + e.getMessage(),
"Błąd połączenia", JOptionPane.OK_OPTION);
}
while (!koniec) {
try {
ObjectInputStream wejscie = new ObjectInputStream(klient
.getInputStream());
pakiet = (Pakiet) wejscie.readObject();
paka=pakiet.s;
koniec=pakiet.koniec;
if (!koniec){
jTextArea1.setText(paka);
}
} catch (Exception e) {
koniec = true;
}}
}
/** This method is called from within the init() method to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
jButton1 = new javax.swing.JButton();
jScrollPane1 = new javax.swing.JScrollPane();
jTextArea1 = new javax.swing.JTextArea();
getContentPane().setLayout(null);
jButton1.setText("jButton1");
jButton1.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {
jButton1MouseClicked(evt);
}
});
getContentPane().add(jButton1);
jButton1.setBounds(160, 230, 73, 23);
jTextArea1.setColumns(1);
jTextArea1.setRows(1);
jScrollPane1.setViewportView(jTextArea1);
getContentPane().add(jScrollPane1);
jScrollPane1.setBounds(70, 36, 240, 120);
}// </editor-fold>
private void jButton1MouseClicked(java.awt.event.MouseEvent evt) {
// TODO add your handling code here:
jTextArea1.insert(pakiet.s, WIDTH);
pakiet=new Pakiet(jTextArea1.getText(),gracz,koniec);
try {
ObjectOutputStream wyjscie = new ObjectOutputStream(
klient.getOutputStream());
wyjscie.writeObject(pakiet);
} catch (Exception e1) {
System.out.println("problem z wysłaniem"
+ e1.toString());
}
}
// Variables declaration - do not modify
private javax.swing.JButton jButton1;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JTextArea jTextArea1;
// End of variables declaration
}