sieciowe kalambury

0

witam, do zrobienia mam gierkę kalambury która ma się składać z serwera i klienta. Udało mi się zrobić tylko czat, ale nie wiem jak dołączyć do tego rysowanie, to wszystko ma być w JPanelu. Proszę o pomoc

serwer
[code]
import java.io.;
import java.net.
;

public class server {

static Socket klientSocket = null;
static ServerSocket serwerSocket = null;
static klientwatek klienci[] = new klientwatek[4];

public static void main(String args[]) {

    int numerPortu = 2500;

    try {
        serwerSocket = new ServerSocket(numerPortu);
    	} 
    
    catch (IOException e) {
        System.out.println(e);
    }

    while (true) {
        try {
            klientSocket = serwerSocket.accept(); 
            for (int idx = 0; idx <= 3; idx++) {
                if (klienci[idx] == null) {
                    (klienci[idx] = new klientwatek(klientSocket, klienci)).start();
                     break;
                }
            }
       } catch (IOException e) {
           System.out.println(e);
        }
    }
}

}

[/code]

klient

[code]
import java.io.;
import java.net.
;

public class klient implements Runnable {

static Socket klientSocket = null;
static PrintStream outputStream = null; 
static DataInputStream inputStream = null; 
static BufferedReader inputLine = null;
static boolean zamkniety = false;

public static void main(String[] args) {

    int numerPortu = 2500;
    
    String host = "localhost";

    try {
        klientSocket = new Socket(host, numerPortu);
        inputLine = new BufferedReader(new InputStreamReader(System.in));
        outputStream = new PrintStream(klientSocket.getOutputStream());
        inputStream = new DataInputStream(klientSocket.getInputStream());
        } 
    
    catch (UnknownHostException e) {
    	e.printStackTrace();
    }
    
    catch (IOException e) {
    	e.printStackTrace();
    }
  
    
    if (klientSocket != null && outputStream != null && inputStream != null) {
        try {

            new Thread(new klient()).start();

            while (!zamkniety) {
                outputStream.println(inputLine.readLine());
            }

            outputStream.close();
            inputStream.close();
            klientSocket.close();
            
        } catch (IOException e) {
        	e.printStackTrace();
        }
    }
}

public void run() {
    String odpowiedzi;

    try {
        while ((odpowiedzi = inputStream.readLine()) != null) {
           System.out.println(odpowiedzi);
        }
        zamkniety = true;
    	}   
    catch (IOException e) {
    	e.printStackTrace();
    }	

}
}

[/code]

klient watek

[code]
import java.io.DataInputStream;
import java.io.IOException;
import java.io.PrintStream;
import java.net.Socket;

class klientwatek extends Thread {

DataInputStream inputStream = null; 
PrintStream outputStream = null; 
Socket klientSocket = null;
klientwatek klienci[];

public klientwatek(Socket klientSocket, klientwatek[] klienci) {
    this.klientSocket = klientSocket;
    this.klienci = klienci;
}

public void run() {
    String linia;
    String nick;
    try {
        inputStream = new DataInputStream(klientSocket.getInputStream());
        outputStream = new PrintStream(klientSocket.getOutputStream());


        outputStream.println("Podaj nick");

        nick = inputStream.readLine(); 

        while (true) {
            linia = inputStream.readLine();
               if (linia.startsWith("/out")) {
               break; 
          }
            for (int idx = 0; idx <= 3; idx++) {
                if (klienci[idx] != null) {
                    klienci[idx].outputStream.println("<" + nick + "> " + linia);
                }
            }
        }
       for (int idx = 0; idx <= 3; idx++) {
            if (klienci[idx] == this) {
                klienci[idx] = null;
            }
        }

        inputStream.close();
        outputStream.close();
        klientSocket.close();
    } catch (IOException e) {
    };
}

}

[/code]

0

jeśli możliwości graficzne nie będą zbyt duże, to chyba najefektywniej by było przekazywać współrzędne końców odcinków

a samo rysowanie implementując metodę paintComponent(...) w jpanelu + obsługa kliknięć nad panelem do rysowania tych linii

0

Moja propozycja - zastosuj tutaj mechanizm RMI. Tutorial http://download.oracle.com/javase/tutorial/rmi/index.html powinien spokojnie wystarczyć żeby ogarnąć jak to działa.

0

Czarna magia.

0

do którego pliku mam dodać Jpanel i aplet z rysowaniem ?

0

a planujesz mieć do tego jakieś gui, czy chcesz wszystko rysować w konsoli?

0

Dobrze jak by ten czat z rysowaniem był w okienku.

0

to najpierw zrób jakieś okienko, a później dodaj do tego tę całą kalamburową otoczkę i na końcu przesyłanie kalamburów przez sieć

0

jak zrobić to przesyłanie ?

0

sprecyzuj pytanie

0

tnz mam aplet z rysowaniem, jak zrobić aby to co rysuje wyświetlało się u drugiej osoby w aplecie ?

0

[code]
import java.awt.;
import java.awt.event.
;
import javax.swing.;
import java.applet.
;

public class okienko extends JApplet implements MouseMotionListener, MouseListener
{

int x=0; int y=0; int a=0;
public void init()
{
addMouseMotionListener(this); addMouseListener(this);
}

public void mouseMoved (MouseEvent e) {}
public void mouseDragged(MouseEvent e) {

if (a==1)
{
x=e.getX();
y=e.getY();
getGraphics().setColor(Color.BLACK); getGraphics().fillOval(x,y,5,5);
}
}
public void mouseClicked (MouseEvent e)
{
int button = e.getButton();
if (button == MouseEvent.BUTTON3) {repaint();}
}
public void mouseEntered (MouseEvent e){}
public void mouseExited (MouseEvent e){}
public void mousePressed (MouseEvent e){
int button = e.getButton();
if (button == MouseEvent.BUTTON3) {a=0; repaint();}
if (button == MouseEvent.BUTTON1) {a=1;}
}
public void mouseReleased(MouseEvent e){}

public void paint(Graphics g)
{
g.setColor(Color.white); g.fillRect(0,0,420,240);
}
}

[/code]

1 użytkowników online, w tym zalogowanych: 0, gości: 1