Корректное отключение
Для корректного завершения сетевого подключения обе стороны должны послать пакеты с сигналом о завершении (FIN), которые указывают что стороны не будут больше отсылать данные, также каждая сторона должна подтвердить (ACK) получение сигнала о завершении сетевого обмена данными. FIN инициируется когда приложение вызывает метод close(), shutdown() или exit(). После завершения работы метода close() ядро переходит в режим ожидания подтверждения от второй стороны приема сигнала о завершении. Это делает возможной ситуацию когда процесс инициировавший отключение будет завершен прежде чем ядро освободит рессурсы связанные с подключением, и снова разрешит использовать порт для связывания с другим процесоом (в этом случае, при попытке использования порта мы получим исключение AddressAlreadyInUse).

На изображении:
- Имеется установленное соединение, состояние ESTABLISHED
- Клиент инициирует окончание подключения, посылает серверу сигнал о завершении подключения (FIN), переходит в состояние ожидания ответа сервера (FIN_WAIT_1)
- Сервер получает сигнал о завершении подключения и отправляет подтверждение (ACK), переходит в состояние ожидания завершения подключения (CLOSE_WAIT) (вызывает close())
- Сервер отсылает клиенту сигнал о том что успешно закрыл подключение (FIN) и пробует прочитать подтверждение клиента (ACK), после чего не дожидаясь его отключается.
- Теперь клиенту может придти два сигнала в разной очередности
ACK — клиент получил подтверждение о том что сервер понял его намерение закрыть подключение
- Клиент переходит в состояние ожидания сигнала об окончании закрытия подключения (FIN) от сервера (FIN_WAIT_2)
- Клиент получает сигнал о закрытии подключения сервером (FIN), отправляет подтверждение (ACK), некоторое время ждет(TIME_WAIT) и отключается (ядро освобождает рессурсы) (CLOSED)
FIN — клиент получает сигнал о закрытии подключения на стороне сервера(FIN), раньше чем подтверждение от сервера (ACK), о получении инициирующего сигнала о закрытии от клиента (FIN)
- Клиент отправляет подтверждение приема сигнала о том что сервер закрывает соединение, и переходит в состояние отключения (CLOSING)
- После отключения пробует считать сигнал подтверждения от сервера (который был отправлен сервером сразу после получения от клиента сигнала о завершении работы, пункт 2), некоторое время ожидает(TIME_WAIT) и ядро освобождает рессурсы (CLOSING).
На рисунке показаны все воможные состояния, которые могут быть во время корректного завершения, в зависимости от порядка получения пакетов FIN и ACK от удаленной стороны. Обратите внимание, если вы инициировали завершение подключения (левая половина рисунка), то другая сторона не будет ожидать подтверждения получения вами пакета FIN (правая половина рисунка). Сотояние TIME_WAIT требуется на случай если подтверждение (ACK) которое вы отправили не было получено на другой стороне, или на случай появления ложных пакетов по какой-то причине. Я не знаю почему на стороне сервера не сделали состояние TIME_WAIT, хотя если клиент инициирует закрытие, это безусловно и не должно требовать ожидания. Состояние TIME_WAIT может удерживать порт в течение нескольких минут после завершения процесса. Время удержания варьируется в зависимости от операционной системы, в некоторых операционных системах оно является динамическим, стандартные значения лежат в диапазоне от 1 до 4 минут.
Если обе стороны успеют инициировать сигнал завершения, раньше чем получат его от другой стороны, то обе стороны будут вынуждены пройти через ожидание (TIME_WAIT).
Корректное отключение слушающей стороны
Слушающий сокет может быть закрыт немедленно, при отсутствии входящих подключений, его состояние переходит сразу в CLOSED. При наличии входящих подключений, будет произведен переход к FIN_WAIT_1 и затем к TIME_WAIT.
Обратите внимание, на стороне слушающего сокета невозможно гарантировать чистое закрытие. Пока вы проверяете использование соединения методом select() до закрытия, существует крошечная, но реальная возможность появления входящего подключения после вызова select() и до вызова close().
Непредвиденное отключение удаленной стороны
При внезапном отключении сервера, локальная сторона инициирует закрытие соединения, и в этом случае TIME_WAIT неизбежен. Если удаленная сторона исчезает из-за сбоя сети или перезагрузки машины (редкие случаи), локальный порт будет оставаться привязанным вплоть до истечения таймаута состояния TIME_WAIT. Хуже того, некоторые старые операционные системы, не реализуют таймаут для состояния FIN_WAIT_2, и могут оставаться в нем бесконечно долго, в этом случае спасти может только перезагрузка системы.
Если же локальное приложение (клиент) падает в процессе активного соединения, порт будет занят пока не завершится состояние TIME_WAIT, то же верно для приложений, закрытых в процессе подключения к удаленной стороне(pending).
Способы избежания проблем
Опция SO_REUSEADDR
Можно использовать метод setsockopt(), для установки опции SO_REUSEADDR, что позволит создавать привязку к порту даже если он еще находится в состоянии TIME_WAIT (привязка к порту будет разрешена только для одного процесса). Это самый простой и эффективный метод избежать сообщения «address already in use».
Но, как ни странно, использование опции SO_REUSEADDR, может привести к более трудноотлавливаемым ошибкам чем «address already in use». SO_REUSEADDR позволяет использовать порт застрявший в TIME_WAIT, но вы все еще сможете использовать этот порт в том процессе, в котором он привязан изначально.
WHAT?
Предположим я использую локальный порт 1010 и подключаюсь на порт 300 сервера foobar.com, затем клиент отключается и порт переходит в состояние TIME_WAIT, и я могу использовать этот порт (1010) в любом подключении за исключением подключения к foobar.com на порт 300.
Ситуация в которой это может вызвать проблему может быть такой: моя программа пытается найти зарезервированный локальный порт(<1024) для привязки, чтобы подключиться к службе которая требует зарезервированный порт, и если я буду использовать опцию SO_REUSEADDR, то при каждом запуске программы на моей машине я буду получать тот же зарезервированный порт, даже если он висит в TIME_WAIT, и могу получить «Address already in use», в том месте где порт был использован в последний раз. В этом случае нужно отказаться от использования опции SO_REUSEADDR.
Некоторые не любят использовать SO_REUSEADDR, т.к. эта опция имеет проблемы с безопасностью. В некоторых операционных системах эта опция может позволить разным процессам использовать один и тот же порт одновременно. И это проблема, потому что большинство серверов привязываются к порту не используя конкретный адрес, вместо этого они используют INADDR_ANY (команда netstat отобразит их как *.8080). Таким образом, если сервер связывается с адресом *.8080, то другой процесс, от другого пользователя локальной машины, может подключиться к адресу local_machine.8080 (и намерения его могут быть совсем не хорошими), и перехватывать все ваши подключения, т.к. он указал более конкретный адрес. Эта проблема проявляется только на многопользовательских системах, не имеющих ограничений для учетных записей, и это не является уязвимостью которая доступна снаружи локальной машины, ее можно легко избежать используя привязку к конкретному адресу машины (не используя INADDR_ANY).
Другим не нравится что ядро системы тратит свои рессурсы на сотни или даже тысячи TIME_WAIT состояний, этой проблемы также можно избежать используя подход описанный ниже.
Клиент отключается первым
Глядя на рисунок выше, мы видим, что состояния TIME_WAIT можно избежать когда закрытие инициируется на удаленной стороне, а значит проблем можно избежать, если сервер позволяет клиенту инициировать отключение первым. Для этого можно построить архитектуру пользовательского протокола таким образом, что клиент знает когда ему нужно инициировать закрытие. Сервер может произвести безопасное отключение получив команду EOF от клиента, однако нам все равно придется установить таймаут ожидания отключения клиента, чтобы тот смог корректно завершить работу. Почти всегда достаточно подождать несколько секунд, пока соединение с сервером не будет корректно завершено.
Эту концепцию, вероятно, имеет смысл назвать «удаленная сторона отключается первой», иначе мы будем зависить от того что мы называем клиентом и что сервером. Если вы разрабатываете некую систему, состоящую из нескольких клиентских программ, которые находятся на одной машине и обращаются к разным серверам, то вы захотите перенести ответственность за отключение на сервера, для сберегания рессурсов клиентской машины.
К примеру, я написал скрипт который использует remote shell(rsh), для общения со всеми машинами моей сети, и он выполняет работу параллельно, постоянно используя несколько открытых соединения. Для rsh доступно меньше 1024 портов. Сначала я использовал команду «rsh -n», которая вызывает отключение локальной стороны в первую очередь. После нескольких тестов все свободные порты меньше 1024, оказались в состоянии TIME_WAIT, и процесс остановился. Удаление опции -n приводит к инициированию отключения на удаленной стороне, и проблема TIME_WAIT устраняется, однако это может привести rsh к зависанию в ожидании входаящего подключения. И если вы закрываете входящее подключение локально, порт снова окажется в состояние TIME_WAIT. В конечном счете я просто отказался от использования rsh и написал свою реализацию на perl (текущую версию можно скачать тут)
Уменьшение таймаута
Если, по какой-то причине, ни один из изложенных вариантов вам не подходит, есть возможность сократить таймаут состояния TIME_WAIT. Возможность и реализация такой операции зависит от операционной системы которую вы используете. Стоить помнить, что слишком короткий таймаут может иметь негативные последствия, в частности при потере пакетов или в перегруженных сетях.
When I’m trying to send an email with attachment with more than one recipients through my C# code an System.Net.Mail.SmtpException is thrown saying «Failure sending mail.»
The inner exception is «One of the streams has already been used and can’t be reset to the origin.»
I understand this kind of error maybe happening because of my attachment.
I have created my attachment in a different class as —
Attatchment file;
string fileContents = File.ReadAllText(fileName);
file = Attachment.CreateAttachmentFromString(fileContents, fileName);
I’m sending it in this format to my class that sends the email. The following happens in that class —
try
{
email.Subject = subject;
email.Body = body;
if (file != null)
{
email.Attachments.Add(file);
}
_smtpClient.Send(email);
}
catch
{
mailSent = false;
}
The mail is always sent to the first recipient but fails for all the rest.
Any ideas why this could be happening?
asked Oct 26, 2015 at 9:21
DeeDeeRDeeDeeR
1251 silver badge5 bronze badges
5
Internally to the Attachment class it appears to use a Stream to contain the data. Some types of stream don’t allow you to reset the position back to the start and will throw an InvalidOperationException with the message you see above.
Your solutions are:
- Send a single mail but put all recipients in the
Bccfield. - Create the attachment for each mail you send — do not reuse the same object each time.
-
This may not work, but you could try using the constructor for
Attachmentthat takes a stream as a parameter instead of string. Put all your string data into aMemoryStreamwhich does allow repositioning. For example:public Stream StringToStream(string s) { MemoryStream stream = new MemoryStream(); StreamWriter writer = new StreamWriter(stream); writer.Write(s); writer.Flush(); stream.Position = 0; return stream; }Then this:
var stream = StringToStream(File.ReadAllText(fileName)); Attatchment file = new Attachment(stream, fileName);
Note: You are initialising the attachment object incorrectly. In the constructor that takes two string parameters, the second parameter is the media type, not the filename.
answered Oct 26, 2015 at 9:40
![]()
DavidGDavidG
110k12 gold badges215 silver badges212 bronze badges
2
In our case it was the LinkedResource instance (file-attachment, embedded into an email as an inline image) that was RE-USED for multiple messages. And messages were .Dispose‘d after sending — which closed all the underlying streams.
I guess it essentially boils down to @DavidG’s answer, just adding my two cents — remember to check embedded resources not just plain attachments.
answered Dec 4, 2018 at 20:42
Alex from JitbitAlex from Jitbit
49.5k18 gold badges147 silver badges140 bronze badges
1
Table of Contents
Hide
- Reasons of this error
-
Solutions
- 1. nginx: [emerg] listen() to [::]:80, backlog 511 failed (98: Address already in use)
- 2. nginx: [emerg] unexpected end of file, expecting “;” or “}” in /etc/nginx/c>
- 3. nginx: [emerg] a duplicate default server for [::]:80 in /etc/nginx/sites-enabled/default
- 4. nginx: [emerg] unknown directive “stream” in /etc/nginx/nginx.conf
- 5. nginx: [emerg] directive “root” is not terminated by “;” in /etc/nginx/conf.d/writefreely.conf:6
- 6. Error in configuration file
-
Conclusion
- Related Posts
You run the command systemctl status nginx.service or sudo systemctl start nginx and bam, you got a scary multi lines error stating that nginx failed to start high performance web server and a reverse proxy server. In this article we will focus on resolving this issue completely.
Reasons of this error
The error is generic. It means there could be multiple reasons for nginx failing to start. Your error logs will show you the reason as to why this is happening. Some of them are –
- nginx: [emerg] listen() to [::]:80, backlog 511 failed (98: Address already in use)
- nginx: [emerg] unexpected end of file, expecting “;” or “}” in /etc/nginx/c>
- nginx: [emerg] a duplicate default server for [::]:80 in /etc/nginx/sites-enabled/default
- nginx: [emerg] unknown directive “stream” in /etc/nginx/nginx.conf
- nginx: [emerg] directive “root” is not terminated by “;” in /etc/nginx/conf.d/writefreely.conf:6
- Others..
Let’s look at each of these errors and solve them.
Solutions
1. nginx: [emerg] listen() to [::]:80, backlog 511 failed (98: Address already in use)
This error appears when the nginx port i.e. 80 and 443 are occupied by some other process like Apache. The solution is to kill all the process which are running on these ports and let nginx use them.
First get the list of all the processes that are running on port 80 –
sudo lsof -i:80
Next, we will stop all these processes –
sudo fuser -k 80/tcp
If apache2 is running on this port then you may also stop it directly –
sudo service apache2 stop
Now you may start your nginx server –
sudo service nginx restart
2. nginx: [emerg] unexpected end of file, expecting “;” or “}” in /etc/nginx/c>
This error shows that there is some syntax error in config file. Open the indicated file at /etc/nginx/ and check for the syntax errors in the file.
3. nginx: [emerg] a duplicate default server for [::]:80 in /etc/nginx/sites-enabled/default
This error arises when you have multiple nginx websites running. Since they all are using the same 80 port so there is a clash. The solution is to change ports or if you can disable them like default website, then do that.
First remove or unlink the default website –
sudo unlink /etc/nginx/sites-enabled/default # OR sudo rm /etc/nginx/sites-enabled/default
Restart the nginx server –
sudo service nginx restart
4. nginx: [emerg] unknown directive “stream” in /etc/nginx/nginx.conf
nginx use the stream module and if we load it dynamically then nginx fails to start and throw this error. To resolve it, you need to statically add the stream module.
First open the nignx.conf file located at /etc/nignx/nginx.conf and add the below code at the very top of this file –
load_module /usr/lib/nginx/modules/ngx_stream_module.so;
Here you need to check whether this ngx_stream_module is located in lib or lib64 on your operating system. In CentOS it is in lib64. So, the address will change to –
load_module /usr/lib64/nginx/modules/ngx_stream_module.so;
Then save the nginx.conf file and run these commands in your terminal –
nginx -t nginx -s reload service nginx restart
5. nginx: [emerg] directive “root” is not terminated by “;” in /etc/nginx/conf.d/writefreely.conf:6
This is again a syntax error in a file. It is saying that “root” is not terminated by semicolon. So, solution is to open the file located at /etc/nginx/conf.d/writefreely.conf, move to line number 6 and add a semicolon at the end.
6. Error in configuration file
If there is some error in configuration file then you can understand it by running this command –
nginx -t -c /etc/nginx/nginx.conf
Once you find the bug, you can resolve it and then restart the nginx server –
sudo service nginx restart
Conclusion
In this article we saw various reasons for error “nginx: failed to start high performance web server and a reverse proxy server”. In your case, the reason could be different but solution will be one of our provided ones.
This is Akash Mittal, an overall computer scientist. He is in software development from more than 10 years and worked on technologies like ReactJS, React Native, Php, JS, Golang, Java, Android etc. Being a die hard animal lover is the only trait, he is proud of.
Related Tags
- Error,
- nginx
STREAM_STATUS_INFO
Events
AGENT_SERVICING_ORIGIN_STREAM_IS_SHUTTING_DOWN
Shutdown agent servicing origin stream.
- Source:
-
- constants.js, line 470
BAD_URI
Bad referenced rtsp link, check for correct, example: rtsp://user:b@d_password@127.0.0.1/stream.
- Source:
-
- constants.js, line 420
CDN_STREAM_NOT_FOUND
CDN stream not found.
- Source:
-
- constants.js, line 456
DISTRIBUTOR_STOPPED
Stopped shapshot distributor.
- Source:
-
- constants.js, line 330
FAILED_BY_DTLS_ERROR
Client did not send DTLS packets or packets were lost/corrupted during transmission.
- Source:
-
- constants.js, line 270
FAILED_BY_DTLS_FINGERPRINT_ERROR
DTLS has wrong fingerprint.
- Source:
-
- constants.js, line 264
FAILED_BY_ERROR
Error occurred on the stream.
- Source:
-
- constants.js, line 318
FAILED_BY_HLS_WRITER_ERROR
Indicates general HLS packetizer error, can occur during initialization or packetization (wrong input or out of disk space).
- Source:
-
- constants.js, line 276
FAILED_BY_ICE_ERROR
Indicates general error during ICE negotiation. Usually occurs if client is behind some exotic nat/firewall.
- Source:
-
- constants.js, line 246
FAILED_BY_ICE_TIMEOUT
Timeout has been reached during ICE establishment.
- Source:
-
- constants.js, line 252
FAILED_BY_KEEP_ALIVE
ICE refresh failed on session.
- Source:
-
- constants.js, line 258
FAILED_BY_RTMP_WRITER_ERROR
Indicates general RTMP republishing error, can occur during initialization or rtmp packetization.
- Source:
-
- constants.js, line 282
FAILED_BY_RTP_ACTIVITY
RTP session failed by RTP activity timer.
- Source:
-
- constants.js, line 288
FAILED_TO_ADD_STREAM_TO_PROXY
Indicates that error occurred during media session creation. This might be SDP parsing error, all ports are busy, wrong session related config etc.
- Source:
-
- constants.js, line 324
FAILED_TO_CONNECT_TO_ORIGIN_STREAM
Server failed to establish websocket connection with origin server.
- Source:
-
- constants.js, line 450
FAILED_TO_CONNECT_TO_RTSP_STREAM
Failed to connect to rtsp stream.
- Source:
-
- constants.js, line 390
FAILED_TO_GET_AGENT_STORAGE
Indicates that provided URL protocol in stream name is invalid.
Valid: vod://file.mp4
Invalid: dov://file.mp4
- Source:
-
- constants.js, line 462
FAILED_TO_READ_FILE
Failed to create movie, file can not be read.
- Source:
-
- constants.js, line 438
FILE_HAS_WRONG_FORMAT
Failed to play vod stream, this format is not supported.
- Source:
-
- constants.js, line 384
FILE_NOT_FOUND
File does not exist, check filename.
- Source:
-
- constants.js, line 444
GOT_EXCEPTION_WHILE_STREAMING_FILE
General VOD error, indicates that Exception occurred while reading/processing media file.
- Source:
-
- constants.js, line 426
MEDIASESSION_ID_ALREADY_IN_USE
Published or subscribed sessions used this MediaSessionId.
- Source:
-
- constants.js, line 360
MEDIASESSION_ID_NULL
Error indicates that stream object received by server has empty mediaSessionId field.
- Source:
-
- constants.js, line 354
NO_AVAILABLE_TRANSCODERS
No available transcoders for stream
- Source:
-
- constants.js, line 494
NO_COMMON_CODECS
No common codecs on setup track, did not found corresponding trackId->mediaPort.
- Source:
-
- constants.js, line 414
PUBLISH_STREAM_IS_NOT_READY
Publish stream is not ready, try again later.
- Source:
-
- constants.js, line 336
REQUESTED_STREAM_SHUTDOWN
Requested stream shutdown.
- Source:
-
- constants.js, line 432
RESTRICTED_ACCESS
Access restricted by access list
- Source:
-
- constants.js, line 488
RTSP_HAS_WRONG_FORMAT
RTSP has wrong format on play stream, check the RTSP url validity.
- Source:
-
- constants.js, line 378
RTSP_STREAM_NOT_FOUND
Rtsp stream is not found, agent received «404-Not Found».
- Source:
-
- constants.js, line 396
RTSPAGENT_SHUTDOWN
On shutdown RTSP agent.
- Source:
-
- constants.js, line 402
SESSION_DOES_NOT_EXIST
Actual session does not exist.
- Source:
-
- constants.js, line 372
SESSION_NOT_READY
Session is not initialized or terminated on play ordinary stream.
- Source:
-
- constants.js, line 366
STOPPED_BY_PUBLISHER_STOP
Related publisher stopped its stream or lost connection.
- Source:
-
- constants.js, line 306
STOPPED_BY_REST_TERMINATE
Stream was stopped by rest terminate request.
- Source:
-
- constants.js, line 300
STOPPED_BY_SESSION_DISCONNECT
Related session was disconnected.
- Source:
-
- constants.js, line 294
STOPPED_BY_USER
Stop the media session by user after call was finished or unpublish stream.
- Source:
-
- constants.js, line 312
STREAM_FAILED
Stream failed
- Source:
-
- constants.js, line 408
STREAM_NAME_ALREADY_IN_USE
Server already has a publish stream with the same name, try using different one.
- Source:
-
- constants.js, line 348
STREAM_NOT_FOUND
Stream with this name is not found, check the correct of the name.
- Source:
-
- constants.js, line 342
TERMINATED_BY_KEEP_ALIVE
Terminated by keep-alive on walk through subscribers.
- Source:
-
- constants.js, line 476
TRANSCODING_REQUIRED_BUT_DISABLED
Transcoding required, but disabled in server settings
- Source:
-
- constants.js, line 482
Java 8 Stream API is used to process data collections such as arrays, lists, and maps. If we often work with streams, we may have encountered the following error: java.lang.IllegalStateException: stream has already been operated upon or closed.
Let us examine the root cause of the problem and how to solve it.
1. Reason
The Java Streams process the collection items with 2 types of operations:
- Intermediate operations: that help in method chaining and return a new Stream of processed items such as filter, sort, or map.
- Aggregate or terminal operations: terminate the stream by performing common operations or reduction on them. After calling the terminal operation, the Stream is considered closed. For example, max, min or collect items into a list or set.
We can use the terminal operation on a Stream only once. Calling a terminal operation in a already closed Stream causes the IllegalStateException.
Let us understand with an example. In the following example, we are using the same Stream twice. First for getting the even numbers, and then for getting the odd numbers.
Stream<Integer> numberStream = Stream.of(123, 234, 11, 57, 60, -4);
List<Integer> evenNumbers = numberStream
.filter(integer -> integer % 2 == 0)
.collect(Collectors.toList());
List<Integer> oddNumbers = numberStream
.filter(integer -> integer % 2 == 1)
.collect(Collectors.toList());
The program output.
Even numbers:
234
60
-4
Exception in thread "main" java.lang.IllegalStateException: stream has already been operated upon or closed
at java.base/java.util.stream.AbstractPipeline.<init>(AbstractPipeline.java:203)
at java.base/java.util.stream.ReferencePipeline.<init>(ReferencePipeline.java:94)
at java.base/java.util.stream.ReferencePipeline$StatelessOp.<init>(ReferencePipeline.java:696)
at java.base/java.util.stream.ReferencePipeline$2.<init>(ReferencePipeline.java:165)
at java.base/java.util.stream.ReferencePipeline.filter(ReferencePipeline.java:164)
at org.example.Main.main(Main.java:18)
Process finished with exit code 1
We can see that the first filtering operation on the stream was executed successfully, but the second operation returned an Exception. This is caused by the fact that the stream is consumed and closed by the first operation, more precisely by the collect() function.
When we started processing the Stream a second time, we get the exception with the message “stream has already been operated upon or closed”.
2. Solution
One solution for this problem would be creating a new stream every time before every stream processing, but there exists a more elegant method to handle this.
The Supplier interface is a functional interface that can be assigned using a lambda function. After initializing the supplier, we can use the get() function. The Supplier.get() returns a newly created Stream Object each time on which we can perform stream operations safely.
Supplier<Stream<Integer>> streamSupplier = () -> Stream.of(123, 234, 11, 57, 60, -4);
List<Integer> evenNumbers = streamSupplier.get()
.filter(integer -> integer % 2 == 0)
.collect(Collectors.toList());
List<Integer> oddNumbers = streamSupplier.get()
.filter(integer -> integer % 2 == 1)
.collect(Collectors.toList());
After running the above code, we will not have any errors and the stream will be processed both times successfully.
3. Conclusion
In this short tutorial, we learned the root cause and solution of the Stream exception “IllegalStateException: stream has already been operated upon or closed“. We learned to fix the error using the Supplier as well as creating a new Stream every time.
Happy Learning !!
#1
![]()
MonsterParamon
-

- Пользователь
-

- 12 сообщений
Новичок
Отправлено 20 Ноябрь 2014 — 15:31
Такая тема:
Играет один человек на паблике и через 4-5 минут его выкидывает(лагает) но остаеться в игре, и пытаеться уже снова зайти и пишет Disconnect: STEAM UserID STEAM_(тут его стим) is already in use on this server.
Но на других серверах у него нормально все.
Ксс он уже переустанавливал и даже ставил UCP но все тоже.
Кто знает из-за чего его постояно выкидывает?
Сообщение отредактировал MonsterParamon: 20 Ноябрь 2014 — 15:34
- Elllymn это нравится
- Наверх
#2
![]()
4atty
Отправлено 20 Ноябрь 2014 — 16:23
Такая тема:
Играет один человек на паблике и через 4-5 минут его выкидывает(лагает) но остаеться в игре, и пытаеться уже снова зайти и пишет Disconnect: STEAM UserID STEAM_(тут его стим) is already in use on this server.
Но на других серверах у него нормально все.
Ксс он уже переустанавливал и даже ставил UCP но все тоже.Кто знает из-за чего его постояно выкидывает?
У кого-то на сервере такой же Steam ID как и у твоего друга) Пусть установит другой емулятор, или просто забань того игрока у которого такой же стим как у твоего друга.
- Наверх
#3
![]()
ranis17
Отправлено 20 Ноябрь 2014 — 16:43
я короче погуглил![]()
Написано типа может стоит на сервер мультипротокол)
- Наверх
#4
![]()
MonsterParamon
MonsterParamon
-

- Пользователь
-

- 12 сообщений
Новичок
Отправлено 20 Ноябрь 2014 — 20:22
У кого-то на сервере такой же Steam ID как и у твоего друга) Пусть установит другой емулятор, или просто забань того игрока у которого такой же стим как у твоего друга.
фишка в том что его выкидывает и он как в лаге висит в игре, пока его же не кикнешь он не зайдет
я короче погуглил
Написано типа может стоит на сервер мультипротокол)
Это что?)
- Наверх
#5
![]()
☆★☆БАТЯ☆★☆™
Отправлено 20 Ноябрь 2014 — 20:36
я короче погуглил
Написано типа может стоит на сервер мультипротокол)
Какой мультипротокол у CSS…
- wait-angel это нравится
- Наверх
#6
![]()
MonsterParamon
MonsterParamon
-

- Пользователь
-

- 12 сообщений
Новичок
Отправлено 20 Ноябрь 2014 — 20:42
Какой мультипротокол у CSS…
А ты не знаешь в чем может быть проблема?
- Наверх
#7
![]()
☆★☆БАТЯ☆★☆™
Отправлено 20 Ноябрь 2014 — 20:43
Лагучий сервер просто, смотри свой мусор плагинов.
- Наверх
#8
![]()
MonsterParamon
MonsterParamon
-

- Пользователь
-

- 12 сообщений
Новичок
Отправлено 20 Ноябрь 2014 — 20:48
Лагучий сервер просто, смотри свой мусор плагинов.
eSTEAMATiON (No Steam) Может в этом проблема?
- Наверх
#9
![]()
ranis17
Отправлено 20 Ноябрь 2014 — 20:53
eSTEAMATiON (No Steam) Может в этом проблема?
RevEmu может?)
Какой мультипротокол у CSS…
да я сам удивился такую фигню пишут инете)
Обычно это в 1.6 как мне известно.
- Наверх
#10
![]()
☆★☆БАТЯ☆★☆™
Отправлено 20 Ноябрь 2014 — 20:58
Ну значит сервер у него v34
- Наверх
#11
![]()
MonsterParamon
MonsterParamon
-

- Пользователь
-

- 12 сообщений
Новичок
Отправлено 20 Ноябрь 2014 — 20:59
RevEmu может?)
да я сам удивился такую фигню пишут инете)
Обычно это в 1.6 как мне известно.
eSTEAMATiON (No Steam)
Эмулятор для no steam (Емулирут SteamID по железу клиента)
?
- Наверх
#12
![]()
ranis17
Отправлено 20 Ноябрь 2014 — 21:17
eSTEAMATiON (No Steam)
Эмулятор для no steam (Емулирут SteamID по железу клиента)
?
Скинь список плагинов ![]()
- Наверх
#13
![]()
MonsterParamon
MonsterParamon
-

- Пользователь
-

- 12 сообщений
Новичок
Отправлено 20 Ноябрь 2014 — 21:30
RevEmu может?)
да я сам удивился такую фигню пишут инете)
Обычно это в 1.6 как мне известно.
SourceMod
Основной модуль для управления сервера и установки дополнительных плагинов. Включает в себя MetamodSource
SourceTV admin demorecord SourceTV admin demorecord
Плагин позволяет управлять записью демок из админки
Noblock 1.4.2 Noblock 1.4.2
Плагин позволяет игрокам проходить друг друга на сквозь, тем самым убирает возможность блокировки друг друга. Плагин хорошо подойдет для серверов с динамичными режимами игры (Surf, GunGame, DeathMatch).
Anti-Reconnect Anti-Reconnect
Блокирует реконект игроку на определенное время.
Quake Sounds 2.7.5 Quake Sounds 2.7.5
Плагин добавляет дополнительные звуки по игре QUAKE
Dissolve 1.0.2 Dissolve 1.0.2
Растворяет трупы игроков в воздухе после их смерти
Show Damage Show Damage
Плагин показывает на экране нанесенные повреждения.
QuickDefuse QuickDefuse
Выбор провода при обезвреживании бомбы.
Advertisements 0.6.0 Advertisements 0.6.0
Это простой плагин рекламы основан на basechat. Он поддерживает такие команды как : say, csay, hsay, msay и tsay
TeamBets 2.6 TeamBets 2.6
Этот плагин позволяет игрокам делать ставки на то, какая из команд выиграет раунд.
Advanced c4 timer Advanced c4 timer
Плагин добавляет таймер бомбы в игру. Есть возможность настроить звуки отсчета.
Bunnystopper Bunnystopper
Плагин,запрещающий делать игрокам распрыг. Принцип работы плагина — высота прыжка остаётся прежней,а гравитация повышена
AdminList AdminList
Плагин выводит список администраторов находящихся в игре.
Rock the Vote Rock the Vote
Плагин дает возможность простым юзерам создавать голосование за след. карту
Resetscore v 1.0.3 Resetscore v 1.0.3
С помощью данного плагина игроки могут обнулить свой счет.
No team flash No team flash Тестируемый
Этот плагин позволяет отключить ослепление от световых гранат брошенных своей командой
TeamSwitch v1.4.0 TeamSwitch v1.4.0 Тестируемый
Плагин позволяет администраторам перемещать игроков.
Skinchooser Skinchooser
Плагин позволяет добавить на ваш сервер модели админов
VBAC — Very Basic Anti-Cheat VBAC — Very Basic Anti-Cheat
Античит плагин для CSS
WeaponGiver v1.01 WeaponGiver v1.01
Дает игрокам оружия обычно используются имена, так что вам не нужно помнить имена оружия. Выбери оружие, а затем выбрать игрока на ее получение. Для вызова меню напишите в чате !wg
Permamute 0.1 Rus Permamute 0.1 Rus
Плагин отключает чат и микрофон навсегда.
SM Parachute 2.5 Final Full SM Parachute 2.5 Final Full
С помощью этого плагина вы сможете падать плавно, используя парашют. Игроку ничего не нужно делать, чтобы использовать плагин, кроме нажатия клавиши Е для использования парашюта.
Dosprotect Dosprotect Тестируемый
Плагин для защиты сервера от DOS-атак
Weapon Restrict 3.1.6 Weapon Restrict 3.1.6
Позволяет Админам запрещать или ограничивать определенное оружие. Также можно запретить для определенной команды, СТ или Т.
SourceBans-1.4.10 SourceBans-1.4.10
Данный плагин предназначен для SourceBans
Joinserver sounds v1.1 Joinserver sounds v1.1 Тестируемый
С помощью данного плагина при входе на сервер будет проигрываться музыка.
Simple Welcome Message 1.2 Simple Welcome Message 1.2 Тестируемый
Данный плагин выводит сообщение игрокам при входе на сервер. Возможность включать как отдельные сообщения, так и все вместе.
GrenadeTrails 1.1 GrenadeTrails 1.1
Плагин создает луч,который отображает траекторию полета гранат.
Kigen Kigen’s Anti-Cheat (1.2.2.9.8.4) for CSS v.34 Тестируемый
Лучший серверный Anti-Cheat для старой версии игры Counter-Strike: Source v.34. Лучший помощник администратору сервера, об перехвате недоброжелательных игроков.
AntiSpam [Status and Ping] (только для eSTEAMATiON) AntiSpam [Status and Ping] (только для eSTEAMATiON)
Защита от скриптов вызыващих лаги командами status и ping
Weapon Fight 1.3.8.6 Переделанный (Knife Fight) Weapon Fight 1.3.8.6 Переделанный (Knife Fight) Тестируемый
Когда игроки останутся 1 на 1 плагин предложит им сразиться на различных оружиях
Welcome Sound v1.0.1 Welcome Sound v1.0.1
Звуковое приветствие при
21:29:49
заходе на сервер
RoundEndSound v2.5.0 RoundEndSound v2.5.0
Проигрывает случайные звуки в конце раунда.
CSS Bank 1.5.1 CSS Bank 1.5.1 Тестируемый
Игрок может положить деньги в банк, передавать их другим игрокам или снять при необходимости.
Blocker passes 1.2.0 Blocker passes 1.2.0 Тестируемый
Плагин позволяет администратору сервера через админ меню устанавливать в нужных местах блокирующие проход пропсы или любые другие пропсы и включить автоматическую установку этих пропсов каждый раунд, если игроков на сервере меньше, чем указано к конфиге плагина.
Rankme 2.8.3 Rankme 2.8.3 Тестируемый
RankMe — плагин организует на сервере статистику игроков и показывает ранг игрока в общем топ листе. Учитывая его расширенные настройки, можно учитывать как все показатели так и некоторые. Поддержка SQLite и MySQL.
Players Votes Redux 1.2.3 Players Votes Redux 1.2.3 Тестируемый
Плагин добавляет возможность голосований обычным игрокам. Полное описание: Игроки могут голосовать за кик игрока с сервера votekick, за бан voteban, за отключение игроку возможности говорить и писать в чат votemute и голосовать за немедленное изменение карты или за изменение карты по окончании timelimit votemap Команды: say votekick, voteban, votemap и votemute для использования игроками.
IP Name & Say Block v2 IP Name & Say Block v2
отправь на форуме попросили
что тут лишние?)
- Наверх
#14
![]()
Kakoin
Отправлено 20 Ноябрь 2014 — 21:32
SourceMod
Основной модуль для управления сервера и установки дополнительных плагинов. Включает в себя MetamodSourceSourceTV admin demorecord SourceTV admin demorecord
Плагин позволяет управлять записью демок из админкиNoblock 1.4.2 Noblock 1.4.2
Плагин позволяет игрокам проходить друг друга на сквозь, тем самым убирает возможность блокировки друг друга. Плагин хорошо подойдет для серверов с динамичными режимами игры (Surf, GunGame, DeathMatch).Anti-Reconnect Anti-Reconnect
Блокирует реконект игроку на определенное время.Quake Sounds 2.7.5 Quake Sounds 2.7.5
Плагин добавляет дополнительные звуки по игре QUAKEDissolve 1.0.2 Dissolve 1.0.2
Растворяет трупы игроков в воздухе после их смертиShow Damage Show Damage
Плагин показывает на экране нанесенные повреждения.QuickDefuse QuickDefuse
Выбор провода при обезвреживании бомбы.Advertisements 0.6.0 Advertisements 0.6.0
Это простой плагин рекламы основан на basechat. Он поддерживает такие команды как : say, csay, hsay, msay и tsayTeamBets 2.6 TeamBets 2.6
Этот плагин позволяет игрокам делать ставки на то, какая из команд выиграет раунд.Advanced c4 timer Advanced c4 timer
Плагин добавляет таймер бомбы в игру. Есть возможность настроить звуки отсчета.Bunnystopper Bunnystopper
Плагин,запрещающий делать игрокам распрыг. Принцип работы плагина — высота прыжка остаётся прежней,а гравитация повышенаAdminList AdminList
Плагин выводит список администраторов находящихся в игре.Rock the Vote Rock the Vote
Плагин дает возможность простым юзерам создавать голосование за след. картуResetscore v 1.0.3 Resetscore v 1.0.3
С помощью данного плагина игроки могут обнулить свой счет.No team flash No team flash Тестируемый
Этот плагин позволяет отключить ослепление от световых гранат брошенных своей командойTeamSwitch v1.4.0 TeamSwitch v1.4.0 Тестируемый
Плагин позволяет администраторам перемещать игроков.Skinchooser Skinchooser
Плагин позволяет добавить на ваш сервер модели админовVBAC — Very Basic Anti-Cheat VBAC — Very Basic Anti-Cheat
Античит плагин для CSSWeaponGiver v1.01 WeaponGiver v1.01
Дает игрокам оружия обычно используются имена, так что вам не нужно помнить имена оружия. Выбери оружие, а затем выбрать игрока на ее получение. Для вызова меню напишите в чате !wgPermamute 0.1 Rus Permamute 0.1 Rus
Плагин отключает чат и микрофон навсегда.SM Parachute 2.5 Final Full SM Parachute 2.5 Final Full
С помощью этого плагина вы сможете падать плавно, используя парашют. Игроку ничего не нужно делать, чтобы использовать плагин, кроме нажатия клавиши Е для использования парашюта.Dosprotect Dosprotect Тестируемый
Плагин для защиты сервера от DOS-атакWeapon Restrict 3.1.6 Weapon Restrict 3.1.6
Позволяет Админам запрещать или ограничивать определенное оружие. Также можно запретить для определенной команды, СТ или Т.SourceBans-1.4.10 SourceBans-1.4.10
Данный плагин предназначен для SourceBansJoinserver sounds v1.1 Joinserver sounds v1.1 Тестируемый
С помощью данного плагина при входе на сервер будет проигрываться музыка.Simple Welcome Message 1.2 Simple Welcome Message 1.2 Тестируемый
Данный плагин выводит сообщение игрокам при входе на сервер. Возможность включать как отдельные сообщения, так и все вместе.GrenadeTrails 1.1 GrenadeTrails 1.1
Плагин создает луч,который отображает траекторию полета гранат.Kigen Kigen’s Anti-Cheat (1.2.2.9.8.4) for CSS v.34 Тестируемый
Лучший серверный Anti-Cheat для старой версии игры Counter-Strike: Source v.34. Лучший помощник администратору сервера, об перехвате недоброжелательных игроков.AntiSpam [Status and Ping] (только для eSTEAMATiON) AntiSpam [Status and Ping] (только для eSTEAMATiON)
Защита от скриптов вызыващих лаги командами status и pingWeapon Fight 1.3.8.6 Переделанный (Knife Fight) Weapon Fight 1.3.8.6 Переделанный (Knife Fight) Тестируемый
Когда игроки останутся 1 на 1 плагин предложит им сразиться на различных оружияхWelcome Sound v1.0.1 Welcome Sound v1.0.1
Звуковое приветствие при21:29:49
заходе на сервер
RoundEndSound v2.5.0 RoundEndSound v2.5.0
Проигрывает случайные звуки в конце раунда.CSS Bank 1.5.1 CSS Bank 1.5.1 Тестируемый
Игрок может положить деньги в банк, передавать их другим игрокам или снять при необходимости.Blocker passes 1.2.0 Blocker passes 1.2.0 Тестируемый
Плагин позволяет администратору сервера через админ меню устанавливать в нужных местах блокирующие проход пропсы или любые другие пропсы и включить автоматическую установку этих пропсов каждый раунд, если игроков на сервере меньше, чем указано к конфиге плагина.Rankme 2.8.3 Rankme 2.8.3 Тестируемый
RankMe — плагин организует на сервере статистику игроков и показывает ранг игрока в общем топ листе. Учитывая его расширенные настройки, можно учитывать как все показатели так и некоторые. Поддержка SQLite и MySQL.Players Votes Redux 1.2.3 Players Votes Redux 1.2.3 Тестируемый
Плагин добавляет возможность голосований обычным игрокам. Полное описание: Игроки могут голосовать за кик игрока с сервера votekick, за бан voteban, за отключение игроку возможности говорить и писать в чат votemute и голосовать за немедленное изменение карты или за изменение карты по окончании timelimit votemap Команды: say votekick, voteban, votemap и votemute для использования игроками.IP Name & Say Block v2 IP Name & Say Block v2
отправь на форуме попросили
что тут лишние?)
sm plugins list в ркон консоль
- Наверх
#15
![]()
MonsterParamon
MonsterParamon
-

- Пользователь
-

- 12 сообщений
Новичок
Отправлено 20 Ноябрь 2014 — 21:38
sm plugins list в ркон консоль
[SM] Listing 53 plugins:
01 «Basic Info Triggers» (1.5.3) by AlliedModders LLC
02 «QuickDefuse» (0.0.3) by pRED* and www.MyArena.ru
03 «Fun Commands» (1.5.3) by AlliedModders LLC
04 «SM WeaponGiver» (1.0.1) by LightningZLaser and www.MyArena.ru
05 «Grenade Trails» (1.1) by Fredd
06 «Round and Map End Sound» (2.5.0) by FrozDark (HLModders.ru LLC) and www.MyArena.ru
07 «Nextmap» (1.5.3) by AlliedModders LLC
08 «SM Parachute» (2.5.0) by SWAT_88 and www.MyArena.ru
09 «Advertisements» (0.6.0) by Tsunami
10 «Kigen’s Anti-Cheat» (1.2.2.9.8.9) by Kigen, GoD-Tony, psychonic and GoDtm666.
11 <Error> «Simple Welcome Message» (1.2) by Zuko
12 «[VIP] Very Important Person» (beta_0.0.5) by GoDtm666
13 «Show Damage» (1.0.7) by exvel
14 «Anti-Reconnect» (1.1.5) by exvel and www.MyArena.ru
15 «Admin Menu» (1.5.3) by AlliedModders LLC
16 «Team Bets and www.MyArena.ru» (2.6.0) by GrimReaper — Original by ferret
17 «Rock The Vote» (1.5.3) by AlliedModders LLC
18 «TeamSwitch» (1.4.0) by MistaGee (Modify by Snake 60) andwww.MyArena.ru
19 «Anti-Flood» (1.5.3) by AlliedModders LLC
20 «Basic Votes» (1.5.3) by AlliedModders LLC
21 «Basic Comm Control» (1.5.3) by AlliedModders LLC
22 «sm_dod_joinserver» (1.1) by Misery
23 «Basic Chat» (1.5.3) by AlliedModders LLC
24 «Reserved Slots» (1.5.3) by AlliedModders LLC
25 «Welcome Sound» (1.0.1) by GoDtm666 (www.MyArena.ru)
26 «PermaMute» (0.1) by Ryan «FLOOR_MASTER» Mannion
27 «Fun Votes» (1.5.3) by AlliedModders LLC
28 «No Team Falsh» (1.0.0) by GoDtm666
29 «Status Protect» (1.0.2) by GoDtm666 and www.MyArena.ru
30 «RankMe» (2.8.3) by lok1
31 «SrcTV demorecord» (0.3) by O!KAK
32 «MapChooser» (1.5.3) by AlliedModders LLC
33 «IP Name & Say Block» (2.0) by R1KO
34 «Client Preferences» (1.5.3) by AlliedModders LLC
35 «Blocker passes» (1.2.0) by »Satan«
36 «Weapon Restrict» (3.1.6) by Dr!fter
37 «bunnystopper» (1.0.1) by Bullet
38 «Admin Help» (1.5.3) by AlliedModders LLC
39 «Weapon Fight (Edited old Knife Fight)» (1.3.8.6) by XARiUS, Otstrel.Ru Team and GoDtm666 www.MyArena.ru
40 «CSS Bank» (1.5.1) by Miraculix and www.MyArena.ru
41 «Player Commands» (1.5.3) by AlliedModders LLC
42 «Sound Commands» (1.5.3) by AlliedModders LLC
43 «SourceBans» (1.4.10) by SourceBans Development Team
44 «Advanced c4 Countdown Timer» (1.4.1) by dalto andwww.MyArena.ru
45 «Admin List» (1.2.0) by Fredd and www.MyArena.ru
46 «Basic Commands» (1.5.3) by AlliedModders LLC
47 «Players Votes Redux» (1.2.3) by ReFlexPoison
48 «Reset Score» (1.0.3) by GoDtm666 (www.MyArena.ru)
49 «Dissolve» (1.0.2) by L. Duke and www.MyArena.ru
50 «Admin File Reader» (1.5.3) by AlliedModders LLC
51 «Quake Sounds» (2.7.5) by dalto, Grrrrrrrrrrrrrrrrrrr, psychonic andwww.MyArena.ru
52 «SM SKINCHOOSER» (2.1.0) by Andi67
53 «NoBlock» (1.4.2) by Otstrel.ru Team and www.MyArena.ru
Load Errors:
Simple Welcome Message: Error detected in plugin startup (see error logs)
- Наверх
#16
![]()
Kakoin
Отправлено 20 Ноябрь 2014 — 21:51
[SM] Listing 53 plugins:
01 «Basic Info Triggers» (1.5.3) by AlliedModders LLC
02 «QuickDefuse» (0.0.3) by pRED* and www.MyArena.ru
03 «Fun Commands» (1.5.3) by AlliedModders LLC
04 «SM WeaponGiver» (1.0.1) by LightningZLaser and www.MyArena.ru
05 «Grenade Trails» (1.1) by Fredd
06 «Round and Map End Sound» (2.5.0) by FrozDark (HLModders.ru LLC) and www.MyArena.ru
07 «Nextmap» (1.5.3) by AlliedModders LLC
08 «SM Parachute» (2.5.0) by SWAT_88 and www.MyArena.ru
09 «Advertisements» (0.6.0) by Tsunami
10 «Kigen’s Anti-Cheat» (1.2.2.9.8.9) by Kigen, GoD-Tony, psychonic and GoDtm666.
11 <Error> «Simple Welcome Message» (1.2) by Zuko
12 «[VIP] Very Important Person» (beta_0.0.5) by GoDtm666
13 «Show Damage» (1.0.7) by exvel
14 «Anti-Reconnect» (1.1.5) by exvel and www.MyArena.ru
15 «Admin Menu» (1.5.3) by AlliedModders LLC
16 «Team Bets and www.MyArena.ru» (2.6.0) by GrimReaper — Original by ferret
17 «Rock The Vote» (1.5.3) by AlliedModders LLC
18 «TeamSwitch» (1.4.0) by MistaGee (Modify by Snake 60) andwww.MyArena.ru
19 «Anti-Flood» (1.5.3) by AlliedModders LLC
20 «Basic Votes» (1.5.3) by AlliedModders LLC
21 «Basic Comm Control» (1.5.3) by AlliedModders LLC
22 «sm_dod_joinserver» (1.1) by Misery
23 «Basic Chat» (1.5.3) by AlliedModders LLC
24 «Reserved Slots» (1.5.3) by AlliedModders LLC
25 «Welcome Sound» (1.0.1) by GoDtm666 (www.MyArena.ru)
26 «PermaMute» (0.1) by Ryan «FLOOR_MASTER» Mannion
27 «Fun Votes» (1.5.3) by AlliedModders LLC
28 «No Team Falsh» (1.0.0) by GoDtm666
29 «Status Protect» (1.0.2) by GoDtm666 and www.MyArena.ru
30 «RankMe» (2.8.3) by lok1
31 «SrcTV demorecord» (0.3) by O!KAK
32 «MapChooser» (1.5.3) by AlliedModders LLC
33 «IP Name & Say Block» (2.0) by R1KO
34 «Client Preferences» (1.5.3) by AlliedModders LLC
35 «Blocker passes» (1.2.0) by »Satan«
36 «Weapon Restrict» (3.1.6) by Dr!fter
37 «bunnystopper» (1.0.1) by Bullet
38 «Admin Help» (1.5.3) by AlliedModders LLC
39 «Weapon Fight (Edited old Knife Fight)» (1.3.8.6) by XARiUS, Otstrel.Ru Team and GoDtm666 www.MyArena.ru
40 «CSS Bank» (1.5.1) by Miraculix and www.MyArena.ru
41 «Player Commands» (1.5.3) by AlliedModders LLC
42 «Sound Commands» (1.5.3) by AlliedModders LLC
43 «SourceBans» (1.4.10) by SourceBans Development Team
44 «Advanced c4 Countdown Timer» (1.4.1) by dalto andwww.MyArena.ru
45 «Admin List» (1.2.0) by Fredd and www.MyArena.ru
46 «Basic Commands» (1.5.3) by AlliedModders LLC
47 «Players Votes Redux» (1.2.3) by ReFlexPoison
48 «Reset Score» (1.0.3) by GoDtm666 (www.MyArena.ru)
49 «Dissolve» (1.0.2) by L. Duke and www.MyArena.ru
50 «Admin File Reader» (1.5.3) by AlliedModders LLC
51 «Quake Sounds» (2.7.5) by dalto, Grrrrrrrrrrrrrrrrrrr, psychonic andwww.MyArena.ru
52 «SM SKINCHOOSER» (2.1.0) by Andi67
53 «NoBlock» (1.4.2) by Otstrel.ru Team and www.MyArena.ru
Load Errors:
Simple Welcome Message: Error detected in plugin startup (see error logs)
37 «bunnystopper» (1.0.1) by Bullet удали в KAC есть защита от bunnyhop
скинь лог Simple Welcome Message
остальные плагины по мне норм
- Наверх
#17
![]()
WINS
Отправлено 21 Ноябрь 2014 — 1:18
говноинтернет пусть себе заменит этот человек, а то понеслось тут.. плагины, мультипротоколы…
у него связь с сервером отваливается и пока его не скинет по таймауту он висит в списке игроков со всеми вытекающими
Сообщение отредактировал WINS: 21 Ноябрь 2014 — 1:33
- Наверх
#18
![]()
☆★☆БАТЯ☆★☆™
Отправлено 21 Ноябрь 2014 — 11:45
говноинтернет пусть себе заменит этот человек, а то понеслось тут.. плагины, мультипротоколы…
у него связь с сервером отваливается и пока его не скинет по таймауту он висит в списке игроков со всеми вытекающими
Но на других серверах у него нормально все.
- Наверх
#19
![]()
WINS
Отправлено 22 Ноябрь 2014 — 1:57
Играет один человек на паблике и через 4-5 минут его выкидывает(лагает)
где массовый характер чтоб пинать сервер?
Но на других серверах у него нормально все.
на месте админа туда бы и отправил (а может и подальше) где у него не лагает.
Сообщение отредактировал WINS: 22 Ноябрь 2014 — 2:00
- Наверх
#20
![]()
wait-angel
Отправлено 22 Ноябрь 2014 — 8:49
Есть что-то подобное?
(connection closing)
(time out)?
- Наверх
A Bit about Stream
Stream is a new feature added in java 8 and represents a sequence of elements. A stream originates from a collection which holds these elements. This collection may be an array, a list, a set, a map etc. It should be remembered that a stream itself does not hold any elements.
A stream supports many operations. It can be iterated, sorted, filtered, reduced etc.
Error – Cause
As stated above, many operations can be applied over a stream. Every operation consumes the stream and a stream can be consumed only once. It cannot be reused. If the same stream is used more than once, an error of the form java.lang.IllegalStateException: stream has already been operated upon or closed is raised. For Example, the following code will generate this error :
//create an array String[] strArr = { "a", "b" }; //initialize a stream to this array Stream stream = Arrays.stream(strArr); //convert this stream to a list :: Stream is consumed here List list = stream.collect(Collectors.toList()); System.out.println(list); //iterate over this list :: Raises an error stream.forEach(str -> System.out.println(str));
Output
[a, b]
Exception in thread “main” java.lang.IllegalStateException: stream has already been operated upon or closed
at java.util.stream.AbstractPipeline.sourceStageSpliterator(AbstractPipeline.java:274)
at java.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:580)
at Codippa.main(Codippa.java:53)
This is because the stream obtained from the array has already been consumed at Line 6 where we are using it to convert to a List and we are re-using it on Line 8 for iterating over the underlying array, which is not permitted and hence an exception is thrown.
Solution
It is not permitted to re-use a stream after it has been consumed once. From javadocs of java.util.Stream interface,
A stream should be operated on (invoking an intermediate or terminal stream operation) only once. A stream implementation may throw
IllegalStateExceptionif it detects that the stream is being reused.
But there might be some scenarios where you have to re-use a stream such as once for filtering a collection to display elements matching some condition and then for iterating over entire stream to display all elements. In such cases following code should help you out :
// create an array String[] strArr = { "a", "b" }; // initialize a stream to this array Stream stream = Arrays.stream(strArr); // convert this stream to a list :: Stream is consumed here List list = stream.collect(Collectors.toList()); System.out.println(list); // return a stream from supplier and iterate over it Supplier<Stream<String>> supplier = () -> Stream.of(strArr); supplier.get().forEach(str -> System.out.println(str));
Output
No error and a correct output, which means we are able to get a solution. Last two lines of the above code require an explanation.
java.util.function.Supplier is a Functional interface with only one method get() which accepts no parameters and returns a value. The expression () -> Stream.of(strArr) is a Lambda expression which is calling of() method of java.util.stream.Stream interface. of() method of java.util.stream.Stream interface returns a value (a Stream object).
Hence the expression () -> Stream.of(strArr) accepts no arguments and returns a value. Thus it can easily represent a Supplier (whose get() method accepts no arguments and returns a value).
Since of() method called in Lambda expression returns a stream of type String, it is assigned to a Supplier> and hence, get() method of Supplier returns a Stream. Now using forEach method of stream, we can iterate over it.
Let’s tweak in
- A Functional interface is always annotated with
@FunctionalInterface. - A stream implementation class has a field
linkedOrConsumed. This is a boolean field which is set totrueonce the stream has been utilized. Before opening the stream, this field is checked to befalse. If it is foundtrue, ajava.lang.IllegalStateExceptionis thrown. of()method ofjava.util.stream.Streaminterface is astaticmethod.of()method returns a new stream pointing to the elements of the collection passed to it. Hence the above piece of may also be written as :// create an array String[] strArr = { "a", "b" }; // initialize a stream to this array Stream stream = Arrays.stream(strArr); // convert this stream to a list :: Stream is consumed here List list = stream.collect(Collectors.toList()); System.out.println(list); // get a stream from array Stream stream2 = Stream.of(strArr); // iterate over the stream stream2.forEach(str -> System.out.println(str));
Thus both the above codes work because we are working on two different streams altogether.
Hope this post helped you out. If there is any explanation required, do not hesitate to clarify !!!
Java Stream reuse – traverse stream multiple times?
Exception
java.lang.IllegalStateException: stream has already been operated upon or closed
2. Look At Problem
2.1 From Java 8 API:
A stream should be operated on (invoking an intermediate or terminal stream operation) only once.
2.2 Explanation:
Taking a deeper look at what happens after stream creation.
A) Stream has intermediate operations, short-circuiting terminal operation and terminal operations.
B) Once a Stream is created, A pipe lines associated to this stream will be created.
C) On the stream, We can perform operations like filter(), map(), findAny(), findFirst(), count(), sum() methods on it.
D) Once we perform any operation on the stream, then that operation is placed into the current stream.
E) All operations will be executed and closes stream.
filter(), map() methods are intermediate operations.
findAny(), findFirst() are short-circuiting terminal operation
count() and sum() are terminal operations.
2.3 Example 1:
Next, think if we create a substreams from main stream as below.
String conent = "line 1 n line 2 \n line 3 \n line 4 \n line 5";
Here a stream is created with pipeline.
Stream mainStream = Stream.of(conent.split("n"));
Now, calling filter method on mainStream. Now filter operation is placed in the current pipeline.
mainStream.filter(line -> line.indexOf("line") > -1);
Now again calling filter method on mainStream. That will try to put the filter operation in the pipe line. But the pipe line is currently in operated mode with above filter. So, it it not possible to create another pipe line on the same stream.
mainStream.filter(line -> line.indexOf("1") > -1);
So it will throw now Runtime exception.
Exception in thread "main" java.lang.IllegalStateException: stream has already been operated upon or closed at java.base/java.util.stream.AbstractPipeline.(AbstractPipeline.java:203) at java.base/java.util.stream.ReferencePipeline.(ReferencePipeline.java:94) at java.base/java.util.stream.ReferencePipeline$StatelessOp.(ReferencePipeline.java:696) at java.base/java.util.stream.ReferencePipeline$2.(ReferencePipeline.java:165) at java.base/java.util.stream.ReferencePipeline.filter(ReferencePipeline.java:164) at com.java.w3schools.blog.exceptions.streams.StreamIntermediateException.main(StreamIntermediateException.java:17)
2.4 Example 2:
Another example program to produce the same exception.
// Creating Stream from String.
String conent = "line 1 n line 2 \n line 3 \n line 4 \n line 5";
Stream mainStream = Stream.of(conent.split("n"));
// Operation on mainStream
Optional firstValue = mainStream.findFirst();
System.out.println("firstValue : " + firstValue.get());
// Operation on mainStream
Optional anyValue = mainStream.findAny();
System.out.println("anyValue : " + anyValue.get());
See in this example, calling two methods on mainStream.
First when calling findFirst() then it returns value. But next invoking findAny(), at this time stream or pipe line is already closed. So it can not perform operation on the same stream.
Output:
firstValue : line 1 Exception in thread "main" java.lang.IllegalStateException: stream has already been operated upon or closed at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:229) at java.base/java.util.stream.ReferencePipeline.findAny(ReferencePipeline.java:548) at com.java.w3schools.blog.exceptions.streams.StreamCloseException.main(StreamCloseException.java:25)
Here firstValue is printed but while getting value from findAny() operation it has failed to get the stream because stream is already closed.
Note:
A Stream should be operated on (invoking an intermediate or terminal stream operation) only once. A Stream implementation may throw IllegalStateException if it detects that the Stream is being reused.
3. Solutions
We have many scenarios where the same stream is required to perform many operations. See the above example 2 where two values are needed.
To solve this issue, We need to create two-stream instances for these two separate operations.
Note:
Instead of creating two stream objects separately, We can use built in API Functional Interface Supplier<T> which is super handy in usage.
Supplier> supplier = () -> Stream.of(conent.split("n"));
// findFirst Operation
Optional firstValue = supplier.get().findFirst();
System.out.println("firstValue : " + firstValue.get());
// findAny Operation
Optional anyValue =supplier.get().findAny();
System.out.println("anyValue : " + anyValue.get());
In this program, created a Supplier object with type of Stream<String>. Supplier has a abstract method that is get() which returns Stream<String>. Now, We have to use Lambda Expression for Supplier Functional Interface with () zero arguments.
So, Whenever we call supplier.get() method than a new fresh Stream<String> object will be created and can perform any stream operation on it.
Output:
Output is returned properly without any errors.
firstValue : line 1 anyValue : line 5
4. Conclusion
In this article, We’ve seen how to fix «java.lang.IllegalStateException: stream has already been operated upon or closed» problem when working with Java 8 Stream objects.
And also seen how to use terminal operations on the same stream using Supplier interface which avoids famous exception «stream has already been operated upon or closed».
All the examples shown in this article are available over GitHub with complete examples.