Здравствуйте, AlexandrV, Вы писали:
AV>Здравствуйте, Leviafan, Вы писали:
L>>Здравствуйте, AlexandrV, Вы писали:
AV>>>Здравствуйте, Leviafan, Вы писали:
L>>>> Всем привет!
L>>>> Вопрос такой: как правильно написать сокет, который ждет подключения к нему и при подключении получает некоторые данные? В мсдн-е видел примеры, но у меня проблема в том, что после вызова listen программа сразу идет дальше (хотя, может так и надо), а если поставить
L>>>>L>>>>while( !socket.Connected ) {}
L>>>>
L>>>> так она так и зависнет, даже если к этому сокету подключаются!!! Расскажите пожалуйста, как все правильно сделать, можно ссылками....
AV>>>http://www.dotsite.ru/Publications/Publication160.aspx
AV>>>http://www.dotsite.ru/Publications/Publication162.aspx
L>>Не совсем понятно! Как мне это с сокетами связать??? (Извините за идиотизм)....
AV>так вы почитали? там есть информация о том, как работать с сокетами:
AV>- первая статья в синхронном (блокирующем режиме)
AV>- вторая в асинхронном.
Вы имеете ввиду этот кусок:
TcpClient client = null;
while (!listener.Pending() && !SocketTerminate) // Тут ожидаем соединения?
Thread.Sleep(100);
if (!SocketTerminate)
{
client = listener.AcceptTcpClient(); // А это уже прием?
if (client != null)
lock (clients)
{
clients.Enqueue(client);
Console.WriteLine("Connected!");
Console.WriteLine("Waiting for a new connection... ");
}
}
Я делаю так:
socket.Bind(point);
socket.Listen(10);
while( !socket.Connected ) {} // И в этом цикле я кручусь бесконечно даже если соединение есть.
// (Т.е. клиент вроде бы коннектиться к чему-то! А из этого цикла я выйти не могу!