Moin Leute,
ich möchte eine Chat-Anwendung schreiben. Mit einem VB.NET-Server und einem VB.NET-Client war das kein Problem. Jetzt will ich aber einen Java ServerSocket haben und da funktionierts garnich. Ich kann mich zwar verbinden, aber der Thread, in dem die Clients akzeptiert werden, ist immernoch geblockt, das heißt, dass laut Java der VB-Client sich nicht verbunden hat.
Mein Code:
Spoiler anzeigen
Und die Client-Klasse:
Spoiler anzeigen
Kann mir bitte jemand sagen, was ich falsch mache?
Danke im voraus
LG
Twometer
PS: Ich habe es mit einem Java Client probiert, da hat alles funktioniert
ich möchte eine Chat-Anwendung schreiben. Mit einem VB.NET-Server und einem VB.NET-Client war das kein Problem. Jetzt will ich aber einen Java ServerSocket haben und da funktionierts garnich. Ich kann mich zwar verbinden, aber der Thread, in dem die Clients akzeptiert werden, ist immernoch geblockt, das heißt, dass laut Java der VB-Client sich nicht verbunden hat.
Mein Code:
Quellcode
- public class VectorDataServer {
- PrintStream printStream;
- ServerSocket serverSocket;
- RunningThread runningThread;
- List<Client> myClients = new ArrayList<Client>();
- public void runServer() throws IOException {
- serverSocket = new ServerSocket(5000);
- runningThread = new RunningThread(this);
- runningThread.run();
- }
- public void onReceivedString(String str){
- sendToEveryone(str);
- }
- public void sendToEveryone(String string){
- for (int i = 0; i < myClients.size(); i++) {
- Client client = myClients.get(i);
- client.send(string);
- }
- }
- class RunningThread extends Thread{
- VectorDataServer myServer;
- public RunningThread(VectorDataServer parent){
- myServer = parent;
- }
- @Override
- public void run() {
- while (true) {
- System.out.println("accepting...");
- try {
- Socket acceptedSocket = serverSocket.accept();
- Client myClient = new Client(acceptedSocket, myServer);
- myClients.add(myClient);
- System.out.println("finish");
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- }
- }
- }
Und die Client-Klasse:
Quellcode
- public class Client {
- Socket mySocket;
- PrintStream printStream;
- InputStream inputStream;
- VectorDataServer server;
- Thread myReadingThread = new ReaderThread();
- public Client(Socket socket, VectorDataServer parent) throws IOException {
- mySocket = socket;
- server = parent;
- inputStream = socket.getInputStream();
- printStream = new PrintStream(socket.getOutputStream());
- myReadingThread.run();
- }
- public void send(String line) {
- printStream.println(line);
- }
- public class ReaderThread extends Thread {
- @Override
- public void run() {
- while (true) {
- try {
- int readByte = inputStream.read();
- line(readByte);
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- }
- public void OnLineFinished(String line) {
- System.out.println(line);
- server.onReceivedString(line);
- }
- StringBuilder sb = new StringBuilder();
- public void line(int bt) {
- try {
- if (bt == 10) {
- OnLineFinished(sb.toString());
- sb = new StringBuilder();
- } else {
- sb.append(Character.toChars(bt));
- }
- }catch (IllegalArgumentException ex){
- System.err.println("An error ocuured!");
- myReadingThread.stop();
- }
- }
- }
- }
Kann mir bitte jemand sagen, was ich falsch mache?
Danke im voraus
LG
Twometer
PS: Ich habe es mit einem Java Client probiert, da hat alles funktioniert
An Error 404 occurred while loading signature...
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Twometer“ ()