Java ServerSocket Und VB.NET TcpClient

  • VB.NET
  • .NET (FX) 4.0

Es gibt 1 Antwort in diesem Thema. Der letzte Beitrag () ist von Twometer.

    Java ServerSocket Und VB.NET TcpClient

    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

    Quellcode

    1. public class VectorDataServer {
    2. PrintStream printStream;
    3. ServerSocket serverSocket;
    4. RunningThread runningThread;
    5. List<Client> myClients = new ArrayList<Client>();
    6. public void runServer() throws IOException {
    7. serverSocket = new ServerSocket(5000);
    8. runningThread = new RunningThread(this);
    9. runningThread.run();
    10. }
    11. public void onReceivedString(String str){
    12. sendToEveryone(str);
    13. }
    14. public void sendToEveryone(String string){
    15. for (int i = 0; i < myClients.size(); i++) {
    16. Client client = myClients.get(i);
    17. client.send(string);
    18. }
    19. }
    20. class RunningThread extends Thread{
    21. VectorDataServer myServer;
    22. public RunningThread(VectorDataServer parent){
    23. myServer = parent;
    24. }
    25. @Override
    26. public void run() {
    27. while (true) {
    28. System.out.println("accepting...");
    29. try {
    30. Socket acceptedSocket = serverSocket.accept();
    31. Client myClient = new Client(acceptedSocket, myServer);
    32. myClients.add(myClient);
    33. System.out.println("finish");
    34. } catch (IOException e) {
    35. e.printStackTrace();
    36. }
    37. }
    38. }
    39. }
    40. }


    Und die Client-Klasse:
    Spoiler anzeigen

    Quellcode

    1. public class Client {
    2. Socket mySocket;
    3. PrintStream printStream;
    4. InputStream inputStream;
    5. VectorDataServer server;
    6. Thread myReadingThread = new ReaderThread();
    7. public Client(Socket socket, VectorDataServer parent) throws IOException {
    8. mySocket = socket;
    9. server = parent;
    10. inputStream = socket.getInputStream();
    11. printStream = new PrintStream(socket.getOutputStream());
    12. myReadingThread.run();
    13. }
    14. public void send(String line) {
    15. printStream.println(line);
    16. }
    17. public class ReaderThread extends Thread {
    18. @Override
    19. public void run() {
    20. while (true) {
    21. try {
    22. int readByte = inputStream.read();
    23. line(readByte);
    24. } catch (IOException e) {
    25. e.printStackTrace();
    26. }
    27. }
    28. }
    29. public void OnLineFinished(String line) {
    30. System.out.println(line);
    31. server.onReceivedString(line);
    32. }
    33. StringBuilder sb = new StringBuilder();
    34. public void line(int bt) {
    35. try {
    36. if (bt == 10) {
    37. OnLineFinished(sb.toString());
    38. sb = new StringBuilder();
    39. } else {
    40. sb.append(Character.toChars(bt));
    41. }
    42. }catch (IllegalArgumentException ex){
    43. System.err.println("An error ocuured!");
    44. myReadingThread.stop();
    45. }
    46. }
    47. }
    48. }


    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“ ()