Здесь используется пример «can read», но он также применим и к другим IList
параметрам («can write», «has error»):
Socket.Select
возвращается, как только в одном из предоставленных сокетов есть данные, доступные для чтения. Это означает, что если вы введете Socket.Select
до того, как данные поступят в несколько сокетов, он, как правило, будет возвращаться, когда данные доступны только в одном сокете (если вы думаете об этом таким образом, зачем ему ждать, пока данные будут доступны другому?).
Чтобы попробовать случай, когда несколько сокетов могут читать, вы можете просто добавить Thread.Sleep
перед вашим Socket.Select
с достаточно большой задержкой, чтобы два процесса отправки могли отправлять свои данные обоим процессам.