KLient/server fejl.
Hej Eksperter;Jeg sidder her og roder med en simpelt chat i java. Min maskine kører server på port 8889; og klienten tilslutter fint.
Efter at klienten har skrevet én besked og serveren har svaret går klienten ned ved afsendelse af anden besked.
Følgende fejl fås:
IO: socket write error (code=10053)
Klientens kode:
import java.net.*;
import java.io.*;
import javax.swing.*;
public class ChatClient {
public static void main(String args[]) {
Socket s = null;
String input = \"\";
input = JOptionPane.showInputDialog(null, \"\", \"Input\", JOptionPane.PLAIN_MESSAGE);
System.out.println(\"Sendt: \" + input);
try {
int serverPort = 8889;
s = new Socket(\"127.0.0.1\", serverPort);
DataInputStream in = new DataInputStream(s.getInputStream());
DataOutputStream out = new DataOutputStream(s.getOutputStream());
while (!input.equalsIgnoreCase(\"q\")) {
out.writeUTF(input);
String data = in.readUTF();
System.out.println(\"Modtaget: \" + data);
input = JOptionPane.showInputDialog(null, \"Input\");
System.out.println(\"Sendt: \" + input);
}
}
catch (UnknownHostException e) {
System.out.println(\"Sock: \" + e.getMessage());
}
catch (EOFException e) {
System.out.println(\"EOF: \" + e.getMessage());
}
catch (IOException e) {
System.out.println(\"IO: \" + e.getMessage());
}
finally {
if (s != null) {
try {
s.close();
}
catch (IOException e) {
System.out.println(\"IO: \" + e.getMessage());
}
}
}
}
}
Serverens kode:
import java.net.*;
import java.io.*;
import javax.swing.*;
public class ChatServer {
public static void main(String args[]) {
try {
int serverPort = 8889;
ServerSocket lytSocket = new ServerSocket(serverPort);
while(true) {
Socket klientSocket = lytSocket.accept();
Connection c = new Connection(klientSocket);
}
}
catch (IOException e) {
System.out.println(\"Listen: \" + e.getMessage());
}
}
}
class Connection extends Thread {
DataInputStream in;
DataOutputStream out;
Socket klientSocket;
public Connection(Socket enKlientSocket) {
try {
klientSocket = enKlientSocket;
in = new DataInputStream(klientSocket.getInputStream());
out = new DataOutputStream(klientSocket.getOutputStream());
this.start();
}
catch (IOException e) {
System.out.println(\"Forbindelse: \" + e.getMessage());
}
}
public void run() {
try { // an Echo Server
String data = in.readUTF();
System.out.println(\"Modtaget: \" + data);
String test = JOptionPane.showInputDialog(null, \"TExt:\");
System.out.println(\"Sendt: \" + test);
out.writeUTF(test);
}
catch (EOFException e) {
System.out.println(\"EOF: \" + e.getMessage());
}
catch (IOException e) {
System.out.println(\"IO: \" + e.getMessage());
}
finally {
try {
//if (klientSocket != null) {
klientSocket.close();
//}
}
catch (IOException e) {
/*
CLOSE KUNNE IKKE UDFØRES !!!!
*/
}
}
}
}
Jeg kan selv regne ud at jeg på en eller anden måde skal have nulstillet mine in/out-put streams ? men hvordan og ja HVORFOR ??
/SNoT
