#java #multithreading #sockets #client
#java #многопоточность #сокеты #клиент
Вопрос:
Я пытаюсь запустить новое клиентское соединение в моей программе TCP P2P. Я хочу запускать каждое новое соединение с runnable.
Я не уверен, в чем проблема. Программа не ломается или что-то в этом роде. Это похоже на то, что он просто игнорирует код для запуска потока.
обновление Следующий код подключается, но немедленно завершает программу.
Thread clientThread = new Thread(){
public void run(){
try {
Socket socketClient = new Socket(ip, yPort);
} catch(Exception ec){
System.out.println("error" ec);
}
}
};
clientThread.start();
System.out.println("connected to " portName);
Комментарии:
1. Вы не запускаете поток. Вы создаете анонимный экземпляр
Runnable
интерфейса, ничего больше. Вам нужно сделать что-то вродеnew Thread(thread).start();
2. Спасибо! Я перейду к этому сейчас.
3. Это то, что вы имели в виду?
4. Не совсем, но это должно сработать. Так ли это?
5. Он подключается. В примере, который я нашел в Интернете, не было ‘;’ после последней скобки, но без нее у меня бы не получилось, поэтому я просто хотел убедиться.
Ответ №1:
Проблема в том, что вы просто подключаетесь внутри потока, а затем ничего не нужно делать, поэтому процесс jvm завершается, и тогда все сокеты и выделенная память будут свободны!