Server Wysylanie danych z GUI

0

Czesc, napisałem aplikacje serwera, ktora posiada mozliwosc wysylania informacji do wszystkich watkow jednocześnie. Nastepnie dolozylem GUI, ktore ma wykorzystywac wysylanie wiadomosci do wszystkich watkow, jednak okazuje się ze funkcja nie dziala poprawnie ( chodzi o funkcje sendToAll()). Wszystko wskazuje na to ze GUI nie widzi listy watkow, wiec nie wie do kogo wysylac, nie wiem gdzie lezy blad. Ponizej zalaczam kod:

public class Server {
	public static void main(String[] args) throws IOException{
		ServerSocket s = new ServerSocket(8189);


		while(true){
			Socket incoming = s.accept();
			ServerThread r = new ServerThread(incoming);
			Thread t = new Thread(r);
			r.add(r);
			t.start();
	
			
			
		}
	}
}

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.Socket;
import java.util.Scanner;
import java.util.Vector;

class ServerThread implements Runnable{
	public Socket incoming;


	static Vector<ServerThread> threadList = new Vector<ServerThread>();
	public ServerThread(Socket i) {
		incoming = i;
	}
	public void send(String string) throws IOException {
		PrintWriter out = new PrintWriter(incoming.getOutputStream(), true);
		System.out.println("ddd");
		out.println("dddd");
		
	}
	public Vector<ServerThread> pobierzTList(){
		System.out.println("ThreadList" + threadList.size());
		return threadList;
	}
	public static void add(ServerThread t) throws IOException {
		threadList.add(t);
		Wyslij w = new Wyslij(threadList);

	}
	
	public 	static Vector<ServerThread> zwrocList(){
		return threadList;
	}
	public void run(){
		
		try {
			InputStream inStream = incoming.getInputStream();
			OutputStream outStream = incoming.getOutputStream();
			
			PrintWriter out = new PrintWriter(outStream, true);
			Scanner in = new Scanner(inStream);
			
			Wyslij w = new Wyslij("Ddd");

			out.println("CZESC");
			while(in.hasNextLine()){

				w.sendToAll("DUPA");
				out.println("ECHO: " +in.nextLine());
				
			}
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		
		
	}
}
import java.util.*;
import java.io.*;
import java.net.*;


class Wyslij {
	public Wyslij(Vector<ServerThread> threadList2) throws IOException{
		threadList = threadList2;
		sendToAll("Dupa");
		threadList.size();
	}


	public Wyslij(String string) throws IOException {
		System.out.println(string);
			sendToAll(string);
//		threadList.size();
	}


	public void sendToAll(String string) throws IOException {
			for(int i =0; i<threadList.size();i++){
				threadList.elementAt(i).send("ddd");		
		}
		
	}
	public static Vector<ServerThread> threadList;
}

a tu jest aplikacja GUI ktora po nacisnieciu przycisku wyslij wywoluje funkcje sendToALL, ktora nie widzi listy watkow.

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;
import java.net.Socket;

import javax.swing.*;
public class GUI {
	public static void main(String[] args) throws IOException{
		JFrame ramka = new JFrame();
		
		ramka.setVisible(true);
		ramka.setTitle("Ramka");
		ramka.setSize(300, 400);
		ramka.setLocationRelativeTo(null);
		ramka.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		JPanel panel = new JPanel();
		panel.setLayout(new BorderLayout(3,3));
		ramka.add(panel);
		
		JTextField okno = new JTextField(20);
		panel.add(okno, BorderLayout.NORTH);
		okno.setText("WIADOMOSC");
		

		
		JButton wyslij = new JButton("Wyslij");
		panel.add(wyslij, BorderLayout.SOUTH);
		wyslij.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				
				try {
					Wyslij w = new Wyslij("Dane z GUI");
				} catch (IOException e1) {
					// TODO Auto-generated catch block
					e1.printStackTrace();
				}
			}
		});
	}
}
0

Wtf?

Wyslij w = new Wyslij("Dane z GUI");

Tworzysz nowy obiekt klasy Wyslij, w którym lista wątków jest pusta.

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