G
GX100
Gast
Hallo,
Nach einer Suche im Web, und nachlesen in der Lektüre und Code, bin ich nun bereit hier eine Frage zu stellen.
Im unteren Code, wird eine graphisches Instrumenten-tool erzeugt. Man kann eine Melodie kreieren, durch aktivieren/deaktivieren der Kästchen, und per Buttons auf der rechten Seite, abspielen, verschnellern/verlangsamen und senden.
Also beim senden, passiert nichts, es gibt ein Eingabefenster und Ausgabefenster, es können zwei Objekte(String/Array) gesendet/empfangen werden, über einen Server. ?
Chatserver
Und hier Ausschnitte vom Client. Falls Ihr noch mehr Code braucht, bitte melden.
Socket erstellen.
Senden/Empfangen Code.
Vielen Dank
G.
Nach einer Suche im Web, und nachlesen in der Lektüre und Code, bin ich nun bereit hier eine Frage zu stellen.
Im unteren Code, wird eine graphisches Instrumenten-tool erzeugt. Man kann eine Melodie kreieren, durch aktivieren/deaktivieren der Kästchen, und per Buttons auf der rechten Seite, abspielen, verschnellern/verlangsamen und senden.
Also beim senden, passiert nichts, es gibt ein Eingabefenster und Ausgabefenster, es können zwei Objekte(String/Array) gesendet/empfangen werden, über einen Server. ?
Chatserver
Java:
import java.io.*;
import java.net.*;
import java.util.*;
public class MusikServer {
ArrayList<ObjectOutputStream> clientOutputStreams;
public static void main(String[] args) {
new MusikServer().los();
}
public class ClientHandler implements Runnable {
ObjectInputStream in;
Socket clientSocket;
public ClientHandler(Socket socket) {
try {
clientSocket = socket;
in = new ObjectInputStream(clientSocket.getInputStream());
} catch(Exception ex) {ex.printStackTrace();}
}
public void run() {
Object o2 = null;
Object o1 = null;
try {
while ((o1 = in.readObject()) != null) {
o2 = in.readObject();
System.out.println("zwei Objekte gelesen");
esAllenMitteilen(o1, o2);
}
} catch(Exception ex) {ex.printStackTrace();}
}
}
public void los() {
clientOutputStreams = new ArrayList<ObjectOutputStream>();
try {
ServerSocket serverSock = new ServerSocket(4242);
while(true) {
Socket clientSocket = serverSock.accept();
ObjectOutputStream out = new ObjectOutputStream(clientSocket.getOutputStream());
clientOutputStreams.add(out);
Thread t = new Thread(new ClientHandler(clientSocket));
t.start();
System.out.println("Verbindung hergestellt");
}
} catch(Exception ex) {ex.printStackTrace();}
}
public void esAllenMitteilen(Object eins, Object zwei) {
Iterator it = clientOutputStreams.iterator();
while(it.hasNext()) {
try {
ObjectOutputStream out = (ObjectOutputStream) it.next();
out.writeObject(eins);
out.writeObject(zwei);
} catch(Exception ex) {ex.printStackTrace();}
}
}
}
Und hier Ausschnitte vom Client. Falls Ihr noch mehr Code braucht, bitte melden.
Socket erstellen.
Java:
public void inBetriebNehmen(String name) {
benutzerName = name;
try {
Socket sock = new Socket("127.0.0.1", 4242);
out = new ObjectOutputStream(sock.getOutputStream());
in = new ObjectInputStream(sock.getInputStream());
Thread remote = new Thread(new RemoteReader());
remote.start();
} catch(Exception ex) {System.out.println("Keine Verbindung möglich - Sie müssen allein spielen.");}
midiEinrichten();
guiErstellen();
}
Senden/Empfangen Code.
Java:
public class MeinSendenListener implements ActionListener {
public void actionPerformed(ActionEvent a) {
boolean[] checkboxZustand = new boolean[256];
for (int i = 0; i < 256; i++) {
JCheckBox check = (JCheckBox) checkboxListe.get(i);
if (check.isSelected()) {
checkboxZustand[i] = true;
}
}
try {
out.writeObject(benutzerName + nummerierung+++ ": " + benutzerNachricht.getText());
out.writeObject(checkboxZustand);
} catch(Exception ex) {System.out.println("Tut mir Leid, Senden an den Server nicht möglich");}
benutzerNachricht.setText("");
}
}
public class MeinListSelectionListener implements ListSelectionListener {
public void valueChanged(ListSelectionEvent le) {
if (!le.getValueIsAdjusting()) {
String wahl = (String) eingangsListe.getSelectedValue();
if (wahl != null) {
boolean[] wahlZustand = (boolean[]) andereSeqsMap.get(wahl);
sequenceWechseln(wahlZustand);
sequencer.stop();
trackErstellenUndStarten();
}
}
}
}
public class RemoteReader implements Runnable {
boolean[] checkboxZustand = null;
String anzuzeigenderName = null;
Object obj = null;
public void run() {
try {
while((obj=in.readObject()) != null) {
System.out.println("Object vom Server erhalten");
System.out.println(obj.getClass());
String anzuzeigenderName = (String) obj;
checkboxZustand = (boolean[]) in.readObject();
andereSeqsMap.put(anzuzeigenderName, checkboxZustand);
listenVector.add(anzuzeigenderName);
eingangsListe.setListData(listenVector);
}
} catch(Exception ex) {ex.printStackTrace();}
}
}
Vielen Dank
G.