Witam,
mam kod źródlowy serwera czy ktoś mógł by mi powiedzieć czy to jest na udp czy na tcp?
pozdrawiam.
public class Serwer extends JFrame {
static ServerSocket gniazdoSerwera;
JTextArea tekst = new JTextArea();;
JScrollPane scroll = new JScrollPane(tekst);
static final int PORT = 50000;
static final int GRACZ_X = 0, GRACZ_O = 1;
static final char ZNAK_X = 'X', ZNAK_O = 'O';
private Gracz[] gracze = new Gracz[2];
static int[] plansza = new int[9];
static int biezacyGracz = GRACZ_X;
public static void main(String[] args) throws IOException{
Serwer okno = new Serwer("Kółko i krzyżyk - serwer");
okno.init();
okno.setDefaultCloseOperation(EXIT_ON_CLOSE);
okno.show();
for (int i=0; i<9; i++) {
plansza[i] = 2;
}
try {
gniazdoSerwera = new ServerSocket(PORT,2);
System.out.println("Serwer wystartował");
} catch(IOException ioException) {
System.exit(1);
}
okno.dzialanie();
}
Serwer(String tytul) {
super(tytul);
}
void init() {
setSize(300, 300);
setLocation(300,300);
Container cp = getContentPane();
cp.setLayout(new BorderLayout());
JPanel plansza = new JPanel();
tekst.setEditable(false);
cp.add(scroll,BorderLayout.CENTER);
tekst.setText("Czekam na klientów...\n");
setVisible(true);
}
public void dzialanie() {
for (int i=0; i<gracze.length; i++) {
try {
gracze[i] = new Gracz(gniazdoSerwera.accept(),i);
tekst.append("Zgłosił się nowy klient.\n");
gracze[i].start();
}
catch(IOException ex) {
ex.printStackTrace();
System.exit(1);
}
}
}
private class Gracz extends Thread {
private Socket gniazdo;
private BufferedReader in;
private PrintWriter out;
private int nrGracza;
private char znak;
protected boolean zajety = true;
public Gracz(Socket socket,int number) throws IOException{
nrGracza = number;
znak = (nrGracza == GRACZ_X ? ZNAK_X : ZNAK_O);
gniazdo = socket;
in = new BufferedReader(new InputStreamReader(gniazdo.getInputStream()));
out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(gniazdo.getOutputStream())), true);
out.println("Jesteś graczem \"" + znak + "\"\n");
}
public void run() {
try {
while (true) {
String napis = in.readLine();
for (int i=0 ; i<9 ; i++) {
if (napis.equals(String.valueOf(i))) {
int pole = i;
plansza[i] = ((biezacyGracz == GRACZ_X) ? GRACZ_X : GRACZ_O);
biezacyGracz = (biezacyGracz + 1) % 2;
gracze[biezacyGracz].ruchPrzeciwnika(pole);
}
}
}
} catch (Exception e) {
System.out.println("Blad " + e);
}
}
public void ruchPrzeciwnika(int pozycja) {
if (biezacyGracz == GRACZ_X) {
out.println(pozycja + "O");
}
else if (biezacyGracz == GRACZ_O){
out.println(pozycja + "X");
}
}
}