powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / перехватить отключение клиента
3 сообщений из 3, страница 1 из 1
перехватить отключение клиента
    #38066627
Николай Ced.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть такая проблема. Сокет сервера слушает клиентов. Клиент отлючается. А сервер его все равно слушает. Как поймать отлючение клиента. isConnected() - не предлагать). Пинг реализовать возможности нет. Клиент не мой. Если кто нибудь сталкивался - прошу поделиться.
...
Рейтинг: 0 / 0
перехватить отключение клиента
    #38066693
am_sasa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Николай Ced.,

Сервер слушает порт, а не клиента. С клиентом он может вести диалог и все.
Если клиент отключился, а сервер диалог с ним не ведет,т.е. не читает и не пишет, то никогда не узнает об этом)))
Если они разделены файрволом, то при чтении данных от клиента тоже не узнает об этом до истечение таймаута.
Заключение - хреновый протокол (диалог) обмена данными.
...
Рейтинг: 0 / 0
перехватить отключение клиента
    #38066782
Николай Ced.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
am_sasa,

под "сервер слушает" имелось ввиду ServerSocket.accept().
насчет полохй или хороший протокол обмена данными - вопрос не в протоколе.а в возможности перехватывать отключение клиента
вот пожалуйста пример классов , подключайтесь Telnet клиентом по 5555 порту.


Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
package test;

import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;

public class server {
	public static void main(String[] a)
	{
		
		try {
			ServerSocket srv=new ServerSocket(5555);
			while(true)
			{
				Socket s=srv.accept();
				new SRVSocket(s);
				
			}
			
			
			
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		
	}

}



package test;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.IOException;
import java.net.Socket;

public class SRVSocket extends Thread {
	
	BufferedInputStream bin;
	BufferedOutputStream bout;
	Socket sc;
	public SRVSocket(Socket sc)
	{
		this.sc=sc;
		try {
			this.bin=new BufferedInputStream(sc.getInputStream());
			this.bout=new BufferedOutputStream(sc.getOutputStream());
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		this.start();
	}
  public void run()
  {
	  try{
	  while(true)
	  {
		 // System.out.println(" "+this.sc.isConnected());
		  
		  if(bin.available()>0)
		  {
			  byte[] f=new byte[bin.available()];
			  bin.read(f);
			  System.out.println(new String(f)+" "+this.sc.isConnected());
			  bout.write(f);
			  bout.flush();
		  }
		   
		  
	  }
	  }catch(Exception ex){System.out.println(ex.toString());}
	  
	  
  }
}
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / перехватить отключение клиента
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]