metoda start()

0

Witam. Mam taki prosty serwer (jeszcze nie jest skończony):

import java.io.*;
import java.net.*;
import java.time.LocalTime;
import java.time.temporal.ChronoUnit;
import static java.time.LocalDate.now;

public class ServerApp
{
    String name = "Server";


        public class Watek1 implements Runnable
        {

            @Override
            public void run() {
                LocalTime minutes = LocalTime.now();
                minutes = minutes.truncatedTo(ChronoUnit.MINUTES);

                try {

                    ServerSocket s = new ServerSocket(3001);
                    System.out.println("Czekamy na połączenie...");
                    Socket server = s.accept();

                    DataOutputStream dos2 = new DataOutputStream(server.getOutputStream());
                    dos2.writeUTF("(" + String.valueOf(minutes) + ")" + name + ": " + "Klient został podłączony " + server.getInetAddress().getHostName());

                    System.out.println(("Klient został podłączony " + server.getInetAddress().getHostName()));

                } catch (IOException e) {
                    System.out.println("error: IOException");
                }
            }
        }


        public static void main(String[] args)
        {
            
        }



}

Czytałem, że aby uruchomić kod w wątku trzeba zastosować metodę start(), ale mi to nie działa (tzn. świeci się na czerwono). Gdzie i jak mam zastosować metodę start() aby włączyć wątek?

3

Nie, no pliz. Nie mów do nas "świeci na czerwono". Jak nie widzisz żadnego komunikatu, to daj sobie spokój z tą zabawą. Nie programuje się po kolorach, tylko po komunikatach błędów.

0

Do wątków jest klasa Thread.

0

Error:(40, 19) java: cannot find symbol
symbol: method start()
location: class ServerApp.Watek1

lub

Error:(10, 21) java: <identifier> expected

Może zacznijmy od tego, że nie jestem pewny jak mam tą metodę wykorzystać. Gdzie mam ją umieścić i jak ma wyglądać?

0

Dobrze... ale co robię źle? Możecie luknąć na kod? Dla takich ekspertów od Javy nie powinno to stanowić problem.

0

Dzięki @rubaszny_karp. Pokazuje mi błąd IOException. Gdzie mam dodać to IOException aby wszystko działało? Próbowałem z każdą klasą w kodzie.

import java.io.*;
import java.net.*;
import java.time.LocalTime;
import java.time.temporal.ChronoUnit;
import static java.time.LocalDate.now;

public class ServerApp
{

    public static class MyRunnable implements Runnable
    {

        @Override
        public void run() 
        {
            String name = "Server";

            LocalTime minutes = LocalTime.now();
            minutes = minutes.truncatedTo(ChronoUnit.MINUTES);

            try
            {

                ServerSocket s = new ServerSocket(3001);
                System.out.println("Czekamy na połączenie...");
                Socket server = s.accept();

                DataOutputStream dos2 = new DataOutputStream(server.getOutputStream());
                dos2.writeUTF("(" + String.valueOf(minutes) + ")" + name + ": " + "Klient został podłączony " + server.getInetAddress().getHostName());

                System.out.println(("Klient został podłączony " + server.getInetAddress().getHostName()));

            }
            catch (IOException e)
            {
                System.out.println("error: IOException");
            }
        }


    }

    public static void main(String[] args)
    {
        Thread myThread = new Thread(new MyRunnable(), "MyThread");
        myThread.getName();
        myThread.start();
    }

}

0

Nie zrozum mnie źle, ale chyba powinieneś najpierw poczytać o programowaniu obiektowym.

Powiedz szczerze robiłeś wcześniej coś w Javie chociaż jakiś kurs podstaw? Bo z tego co widzę nie wiesz do końca jak ten program będzie działał. Z tego co można wyczytać z kodu, utworzysz serwer w oddzielnym wątku, klient się połączy, serwer wyśle mu komunikat, sam wyświetli info i program zakończy swoje działanie. Czyli mało tego, że nie będzie opcji podłączenia dwóch klientów na raz, w ogóle nie będzie możliwości połączenia dwóch klientów. No chyba, że o to Ci chodziło.

1 użytkowników online, w tym zalogowanych: 0, gości: 1