Проблема с Сокетами в .NET
От: unit132  
Дата: 18.03.08 11:17
Оценка:
Доброго времени суток.

Есть следущая проблема — функции класса Socket, Send/Shutdown/Close работают как мне кажется, не так как должны.
Они всегда возвращаются мгновенно, хотя по идее должны блокировать (для Close при LingerState с таймаутом). Close к тому же не закрывает соединение.

Код следующий (подключение к ФТП серверу. Макс. скорость на сервере ограничена в 1KB/s):

Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
s.Connect("127.0.0.1", 21);
s.Receive(reply);
s.Send(user);
s.Receive(reply);
s.Send(pass);
s.Receive(reply);

int bytesSent = s.Send(data);  // data - маcсив размером в пол-мегабайта

s.Shutdown(SocketShutdown.Both);
s.Close();


Этот код выполняется мгновенно, bytesSent == пол-мегабайта, Shutdown и Close никак не влияют. После выполнения кода фтп сервер продолжает получать данные из data.
Пробывал тоже самое с классом TcpClient, всё точно так же.

Вопрос: это нормальное поведение, и если нет, то что это может быть ?

Спасибо.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.