I
ich²
Gast
Hallo Forum,
da jetzt einmal der Einstieg in die Netzwerprogrammierung meinerseits geschafft habe ich mich mal an die Versendung von Texten gewagt. Dabei kommt es aber zu folgendem Fehler:
Und zwar immer wenn ich das 2. mal etwas senden möchte. Leider kann ich den Code aufgrund meiner Unerfahrenheit nicht wirklich eingrenzen, aber er ist zum Glück noch nicht ganz so viel Code .
Schomal danke fürs drüberschauen ...
mfg ich²
da jetzt einmal der Einstieg in die Netzwerprogrammierung meinerseits geschafft habe ich mich mal an die Versendung von Texten gewagt. Dabei kommt es aber zu folgendem Fehler:
java.net.SocketException: Software caused connection abort: socket write error
at java.net.SocketOutputStream.socketWrite0(Native Method)
at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:92)
at java.net.SocketOutputStream.write(SocketOutputStream.java:115)
at Client2$2.run(Client2.java:70)
at java.lang.Thread.run(Thread.java:595)
Und zwar immer wenn ich das 2. mal etwas senden möchte. Leider kann ich den Code aufgrund meiner Unerfahrenheit nicht wirklich eingrenzen, aber er ist zum Glück noch nicht ganz so viel Code .
Code:
import java.io.*;
import java.net.*;
import java.util.*;
public class Server2 {
ServerSocket server = null;
Socket client = null;
InputStream in = null;
OutputStream out = null;
Vector clients = null;
byte[] incomming = new byte[0];
byte[] copy = null;
byte singleByte;
public Server2(int port) {
try {
server = new ServerSocket(port);
clients = new Vector();
startServer();
}
catch (IOException e) {
e.printStackTrace();
System.out.println("Server wird beendet");
}
}
public void startServer() {
new Thread(new Runnable() {
public void run() {
while (true) {
try {
client = server.accept();
out = client.getOutputStream();
in = client.getInputStream();
incomming = new byte[0];
while ((singleByte = (byte)in.read()) != -127) {
copy = incomming;
incomming = new byte[copy.length + 1];
for (int i = 0; i < copy.length; i++) {
incomming[i] = copy[i];
}
incomming[copy.length] = singleByte;
}
System.out.println("Eingehende Nachricht:\n" + new String(incomming));
for (int i = 0; i < incomming.length; i++) {
out.write(incomming[i]);
}
out.write((byte)-127);
client.close();
}
catch (IOException e) {
e.printStackTrace();
System.out.println("Server wird beendet");
System.exit(1);
}
}
}
}).start();
}
public static void main(String[] args) {
new Server2(3141);
}
}
Code:
import java.net.*;
import java.io.*;
public class Client2 {
Socket server = null;
InputStream in = null;
OutputStream out = null;
byte[] toWrite = null;
byte[] incomming = new byte[0];
byte[] copy = null;
byte singleByte;
public Client2(String host, int port) {
try {
server = new Socket(host, port);
out = server.getOutputStream();
in = server.getInputStream();
startSending();
startIncomming();
}
catch (IOException e) {
e.printStackTrace();
System.out.println("Server wird beendet");
}
}
public void startIncomming() {
new Thread(new Runnable() {
public void run() {
while (true) {
try {
incomming = new byte[0];
while ((singleByte = (byte)in.read()) != -127) {
copy = incomming;
incomming = new byte[copy.length + 1];
for (int i = 0; i < copy.length; i++) {
incomming[i] = copy[i];
}
incomming[copy.length] = singleByte;
}
if (incomming.length != 0) {
System.out.println("Nachricht erreicht:\n" + new String(incomming));
}
Thread.sleep(500);
}
catch (IOException e) {
e.printStackTrace();
System.out.println("Empfangen wird beendet");
System.exit(1);
}
catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}).start();
}
public void startSending() {
new Thread(new Runnable() {
public void run() {
while (true) {
try {
toWrite = new BufferedReader(new InputStreamReader(System.in)).readLine().getBytes();
for (int i = 0; i < toWrite.length; i++) {
out.write(toWrite[i]);
}
out.write((byte)-127);
}
catch (IOException e) {
e.printStackTrace();
System.out.println("Sending wird beendet");
System.exit(1);
}
}
}
}).start();
}
public static void main(String[] args) {
new Client2("localhost", 3141);
}
}
Schomal danke fürs drüberschauen ...
mfg ich²