Re[4]: Помогите разобраться с сокетами!!!!!
От: Leviafan  
Дата: 24.02.05 06:53
Оценка:
Здравствуйте, 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 ) {} // И в этом цикле я кручусь бесконечно даже если соединение есть. 
                              // (Т.е. клиент вроде бы коннектиться к чему-то! А из этого цикла я выйти не могу!
Z
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.