> > Выглядит все примерно так (в общем стандартно). В main() > создается экземрляр NewServer и вызывается serveThem(). > **************************************************** > public NewServer(){ > try { > listenSocket = new ServerSocket(SERVER_PORT, backLog); > // backLog у меня вообще ни на что не влияет, хоть 2, > хоть 200,
> // все равно клиентов он присоединит около 50 > // ??вообще, очень бы хотелось посмотреть содержимое
Берешь исходники библиотек (раньше клались в JDK) или любой Java-декомпилятор и смотришь соответствующий кусок библиотек
в исходном коде ... но тут скорее всего все чисто ...
> этой > //очереди > } catch (IOException e) { > System.exit(1); > } > } > > public void serveThem(){ > Socket clientSocket = null; > try { > while (keepRunning) { > clientSocket = listenSocket.accept(); > Servicer newHandler = new Servicer(clientSocket); > Thread newHandlerThread = new Thread(newHandler); > newHandlerThread.start(); > } > } catch (IOException e) { > System.err.println("error: I/O"); > } > } > ******************************************************** > */ > > Примерно 50-й клиент (и все остальные), пытаясь открыть > сокет на сервере (Socket qSocket = new Socket(serverName, > SERVER_PORT)),
Они все 50 должны иметь соединения с сервером или по дороге иногда закрываются ?
в смысле ты нигде .close() не забыл ?
> вылетает со следующим исключением > java.net.SocketException: connect
Скорее всего проблема в подходе к границе максимального числа
открытых соединений для данной OS ....
BTW: OS какая кстати ?
Если Win9x то оно а вот если Sоlaris то это уже вопрос к JVM
Надо написать на java обычное серверное приложение, которое слушает какой-то порт и каждого подключившегося клиента обрабатывает в отдельном потоке. Но проблема в следующем: класс ServerSocket подключает не больше 50 (в среднем) клиентов одновременно.
Надо гораздо больше, подскажите как это реализовать.
Заранее благодарю,
Макс.
[Java] ServerSocket затрахал...21.08.01 10:58 Автор: XR <eXtremal Research> Статус: The Elderman Отредактировано 21.08.01 14:24 Количество правок: 1
> Господа, > > Надо написать на java обычное серверное приложение, которое > слушает какой-то порт и каждого подключившегося клиента > обрабатывает в отдельном потоке. Но проблема в следующем: > класс ServerSocket подключает не больше 50 (в среднем) > клиентов одновременно.
покажи код, иначе не совсем понятно, что ты делаешь....
....наверное что то типа
ServerSocket ss;
.........
Socket s = ss.accept();
... так ?
и где затык ? какие исключения ловятся ?
> Надо гораздо больше, подскажите как это реализовать. > > Заранее благодарю, > Макс.
Выглядит все примерно так (в общем стандартно). В main() создается экземрляр NewServer и вызывается serveThem().
**************************************************** public NewServer(){
try {
listenSocket = new ServerSocket(SERVER_PORT, backLog);
// backLog у меня вообще ни на что не влияет, хоть 2, хоть 200,
// все равно клиентов он присоединит около 50
// ??вообще, очень бы хотелось посмотреть содержимое этой
//очереди
} catch (IOException e) {
System.exit(1);
}
}
public void serveThem(){
Socket clientSocket = null;
try {
while (keepRunning) {
clientSocket = listenSocket.accept();
Servicer newHandler = new Servicer(clientSocket);
Thread newHandlerThread = new Thread(newHandler);
newHandlerThread.start();
}
} catch (IOException e) {
System.err.println("error: I/O");
}
}
*********************************************************
Примерно 50-й клиент (и все остальные), пытаясь открыть сокет на сервере (Socket qSocket = new Socket(serverName, SERVER_PORT)),
вылетает со следующим исключением
java.net.SocketException: connect
> > Выглядит все примерно так (в общем стандартно). В main() > создается экземрляр NewServer и вызывается serveThem(). > **************************************************** > public NewServer(){ > try { > listenSocket = new ServerSocket(SERVER_PORT, backLog); > // backLog у меня вообще ни на что не влияет, хоть 2, > хоть 200,
> // все равно клиентов он присоединит около 50 > // ??вообще, очень бы хотелось посмотреть содержимое
Берешь исходники библиотек (раньше клались в JDK) или любой Java-декомпилятор и смотришь соответствующий кусок библиотек
в исходном коде ... но тут скорее всего все чисто ...
> этой > //очереди > } catch (IOException e) { > System.exit(1); > } > } > > public void serveThem(){ > Socket clientSocket = null; > try { > while (keepRunning) { > clientSocket = listenSocket.accept(); > Servicer newHandler = new Servicer(clientSocket); > Thread newHandlerThread = new Thread(newHandler); > newHandlerThread.start(); > } > } catch (IOException e) { > System.err.println("error: I/O"); > } > } > ******************************************************** > */ > > Примерно 50-й клиент (и все остальные), пытаясь открыть > сокет на сервере (Socket qSocket = new Socket(serverName, > SERVER_PORT)),
Они все 50 должны иметь соединения с сервером или по дороге иногда закрываются ?
в смысле ты нигде .close() не забыл ?
> вылетает со следующим исключением > java.net.SocketException: connect
Скорее всего проблема в подходе к границе максимального числа
открытых соединений для данной OS ....
BTW: OS какая кстати ?
Если Win9x то оно а вот если Sоlaris то это уже вопрос к JVM