Hallo,
ich habe ein einfaches Beispiel für ein ServerSocket und ein Socket welches als Client fungiert. Im Prinzip funktioniert alles bis auf das Lesen des Inputs vom Client, hier bleibt der Server hängen. Mittlerweile fällt mir nichts mehr ein, zumal das Beispiel mit einfachem InputStream und OutputStream funktioniert, hier kann ich aber nur primitive Integer zwischen Client und Server austauschen. Wo ist mein Denkfehler? Ich für jede Hilfe dankbar.
Anbei der Code des Servers:
Der code des Clients:
Der code zum starten des Servers:
Der code zum starten des Clients:
ich habe ein einfaches Beispiel für ein ServerSocket und ein Socket welches als Client fungiert. Im Prinzip funktioniert alles bis auf das Lesen des Inputs vom Client, hier bleibt der Server hängen. Mittlerweile fällt mir nichts mehr ein, zumal das Beispiel mit einfachem InputStream und OutputStream funktioniert, hier kann ich aber nur primitive Integer zwischen Client und Server austauschen. Wo ist mein Denkfehler? Ich für jede Hilfe dankbar.
Anbei der Code des Servers:
Java:
package de.test;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
public class MyTestServer {
private ServerSocket _server;
private int _nCountOfRequests;
public MyTestServer() throws IOException
{
_nCountOfRequests = 0;
}
public void startServer(int nPort)
{
System.out.println("startServer method");
try
{
_server = new ServerSocket(nPort);
} catch (IOException e1)
{
System.out.println("start of server failed");
e1.printStackTrace();
}
while (true)
{
try
{
Socket client = _server.accept();
_nCountOfRequests++;
BufferedReader input = new BufferedReader(new InputStreamReader(client.getInputStream()));
PrintWriter output = new PrintWriter(client.getOutputStream());
// hier bleibt er haengen
StringBuffer inputText = new StringBuffer(input.readLine());
System.out.println("server input: "+inputText);
output.write(new String("_nCountOfRequests="+_nCountOfRequests+"; input: "+inputText));
output.flush();
input.close();
output.close();
}
catch (IOException e)
{
}
}
}
}
Der code des Clients:
Java:
package de.test;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException;
public class MyTestClient {
public MyTestClient()
{
}
public void connectToServer(int nPort) throws UnknownHostException, IOException
{
Socket server = new Socket("localhost", nPort);
PrintWriter output = new PrintWriter(server.getOutputStream());
BufferedReader input = new BufferedReader(new InputStreamReader(server.getInputStream()));
output.write("hello server");
output.flush();
String line;
while ((line = input.readLine()) != null)
{
if (line.length() == 0)
break;
System.out.println("return from server:"+line);
}
server.close();
input.close();
output.close();
}
}
Der code zum starten des Servers:
Java:
package de.test;
import java.io.IOException;
public class StartServer {
/**
* @param args
*/
public static void main(String[] args)
{
int nPort = 9900;
try
{
System.out.println("start server");
MyTestServer server = new MyTestServer();
server.startServer(nPort);
} catch (IOException e)
{
e.printStackTrace();
}
}
}
Der code zum starten des Clients:
Java:
package de.test;
import java.io.IOException;
import java.net.UnknownHostException;
public class StartClient {
/**
* @param args
*/
public static void main(String[] args)
{
System.out.println("start client");
int nPort = 9900;
MyTestClient client = new MyTestClient();
try
{
client.connectToServer(nPort);
} catch (UnknownHostException e)
{
e.printStackTrace();
} catch (IOException e)
{
e.printStackTrace();
}
}
}
Zuletzt bearbeitet: