-
Hi No5!
Ja, ich hab mir mal eure Systemzeichnung angeguckt. Wir wollen das genauso machen. (zumindest sehr ähnlich) Das ist auch die vernünftigste Systemstruktur ;)
Ich werde mir vielleicht später mal überlegen ob ich bei euch mitmache (du hast ja schon gefragt) Ich bin im Moment noch kein besonders guter Programmierer, ich schreibe auch erst seit einem knappen halben Jahr.
Kann mir den jemand mit meinem konkreten Problem mal weiterhelfen? Wäre nett, danke.
Gruß Jan.
-
Es wäre gut zu wissen, bei welchem Methodenaufruf die Exception geworfen wird. Dazu könntest du z.B. im catch Block e.printStackTrace() aufrufen.
Ansonsten kann ich nur raten:
- sind Firewall ausgeschaltet bzw. Ports freigegeben ?
- läuft der Server wirklich bzw. wartet er wirklich auf eine Verbindungsanfrage mittels accept?
Gruß, Dirk
-
Also die Server Klasse ist immer noch so, wie weiter oben gepostet. Es wird auch definitiv eine Verbindung aufgebaut, denn im Array kommt ein Client an. Ich werd deinen Tipp mit e.printStrackTrace() mal ausprobieren. Sag dann wieder bescheid.
Danke.
Gruß, Jan.
-
So, jetzt hab ich die Ausgabe von e.printStackTrace:
java.net.SocketException: Connection reset
at java.net.SocketInputStream.read(SocketInputStream. java:168)
at sun.nio.cs.StreamDecoder$CharsetSD.readBytes(Strea mDecoder.java:411)
at sun.nio.cs.StreamDecoder$CharsetSD.implRead(Stream Decoder.java:453)
at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:1 83)
at java.io.InputStreamReader.read(InputStreamReader.j ava:167)
at java.io.BufferedReader.fill(BufferedReader.java:13 6)
at java.io.BufferedReader.readLine(BufferedReader.jav a:299)
at java.io.BufferedReader.readLine(BufferedReader.jav a:362)
at main.Client$Input.run(Client.java:66)
at java.lang.Thread.run(Thread.java:595)
Sagt mit persönlich nicht viel, außer das aus irgendeinem Grund die Verbindung vorzeitig beendet wird oder so... Vielleicht wäre in dem Zusammenhang der Code des Plugins, dass ich zum Testen benutze ganz nützlich. Ich pack den einfach mal hier rein:
Test.java:
Code:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.net.Socket;
public class Test
{
private int id = 0;
private Socket s;
private PrintStream ps;
private BufferedReader br;
public Test()
throws IOException
{
s = new Socket("localhost",4003);
s.setKeepAlive(true);
ps = new PrintStream(s.getOutputStream());
br = new BufferedReader(new InputStreamReader(s.getInputStream()));
ps.println(id);
}
private void sendMessage(String msg)
{
ps.println(msg);
}
public static void main(String args[])
{
try
{
Test t = new Test();
Thread i = new Thread(t.new Input());
Thread o = new Thread(t.new Output());
}
catch(IOException e)
{
System.err.println(e.getMessage());
}
}
class Input
implements Runnable
{
public void run()
{
try
{
while(true)
{
System.out.println(br.readLine());
}
}
catch(IOException e)
{
System.err.println(e.getMessage());
}
}
}
class Output
implements Runnable
{
private BufferedReader r;
public Output()
{
r = new BufferedReader(new InputStreamReader(System.in));
}
public void run()
{
try
{
while(true)
{
sendMessage(r.readLine());
}
}
catch(IOException e)
{
System.err.println(e.getMessage());
}
}
}
}
Ich hoffe mir kann jetzt jemand weiterhelfen?
Gruß, Jan.
-
Hallo,
das Test-Objekt t wird bei verlassen des try-Blocks zerstört und damit auch die enthaltenen Verbindungen. Es muss also vor dem try-Block definiert werden. Ausserdem könnte es sein, dass nach dem Erstellen der Threads die Main Methode verlassen wird und dabei auch das Objekt zerstört wird. Versuch mal eine Endlosschleife am Ende der Main Methode.
Code:
public static void main(String args[])
{
Test t = new Test(); // hier ist das Objekt die ganze Main-Methode lang vorhanden
try
{
Thread i = new Thread(t.new Input());
Thread o = new Thread(t.new Output());
}
catch(IOException e)
{
System.err.println(e.getMessage());
}
while(true)
{
; //Endlosschleife
}
}
-
Gut, danke. Das hätte ich nicht gemerkt :D
Ich meld mich, wenns wieder was gibt.
Gruß, Jan.
-
hallo MJA
du kannst mal die mc als partner nehmen dann weiß du wo der fehler ist sender oder empfänger.
Connection refused. komm auch dann wenn der server nich auf dem port
hört zu dem du dich conneten willst was ist den dein server ?
kannst du dich auf den server per Hyperterminal oder telnet connecten ?
Gruß
-
Hi.
Ich hab jetzt noch mal "ganz von vorne" angefangen. Aber ich hab das System und so vom alten übernommen und auch weite Teile des Codes, bloß hab ich einiges geändert/verbessert. Und bin eigendlich schon wieder fast so weit wie vorher.
Das Problem bestand bestimmt nicht darin, dass der Server am falschen Port gehorcht hat.
Ne, dirk_r hatte schon Recht, das Objekt wurde nach dem try-Block zerstört.
Ich stehe mittlerweile vor einem neuen Problem, aber das versuche ich erstmal alleine zu lösen.
Gruß, Jan.
-
Hi.
Eine kleine Frage hab ich doch: Und zwar hab ich den Array String s[]. Der hat sagen wir die Länge 4. Jetzt möchte ich alle Strings daraus extrahieren bis auf s[0]. Das soll aber für alle Arrays mit beliebiger Länge funktionieren. Also einfach eine Methode, die aus einem beliebig langen Array alle Argumente außer s[0] extrahiert. Das muss irgendwie über s.length() gehen denk ich mal. Mit einer Schleife oder so. Kann mir da kurz jemand helfen?
Gruß
-
Funktioniert folgende Lösung?:
Code:
public String[] getArguments(String input) {
String s[] = input.split("-");
String output[] = new String[s.length-1];
for(int i = 1; i < s.length; i++)
output[i-1] = s[i];
return output;
}
Ich hoffe das geht?
Gruß, Jan.
Edit: Ich habs ausprobiert, es geht. Das Problem ist gelöst.