Сокет выдает 10004 при получении ответа

 
0
 
.NET
ava
0000 | 10.09.2007, 14:39
у меня проблема такая..я передаю файлик на FTP..разбиваю его по килобайту и кидаю каждый в своем потоке подряд..потоки синхронизированы так:


while ((bytes = inp.Read(this.SendBuff, 0, this.SendBuff.Length)) > 0)
{
try
{
obj.bytesToRead = bytes;
IAsyncResult ar = this.DataSocket.BeginSend(this.SendBuff, 0, obj.bytesToRead, SocketFlags.None, new AsyncCallback(this.SendingCallBack), obj);
while (!ar.AsyncWaitHandle.WaitOne())
{ }
}
catch (Exception ex)
{
pc.Rezult = false;
}
}


все это в CF 2.0.. когда телефон к компу подключен - все цивильно, файло передается, проблем не возникает..когда потоки не синхронизированы - файл передается неправильно немного, но проблема не в этом..
как только я пускаю прогу со смартфона - после команды для FTP-сервера

this.SendCommand("STOR " + System.IO.Path.GetFileName(fileName));


все минуты на 2 подвисает, после чего сокет сообщает об ошибке 10004:

Interrupted function call (Прерван вызов функции).
Блокирующая операция прервана вызовом WSACancelBlockingCall().


После этого любая попытка отправить или принять данные через сокет методами send и receive приводит к ошибке 10038:

Socket operation on non-socket.
Попытка операции на чем-то, что не является сокетом. Либо это операция с указателем, который не ссылается на допустимый сокет, или , в случае select(), недопустимый член fd_set.


при том сокет на все запросы про null, Connected отвечает корректно....
вот я не пойму в чем разница...настройки смарта видимо не влияют - на трех симках уже пробовал такое (через GPRS)
Comments (1)
ava
0000 | 12.09.2007, 12:15 #
похоже все таки дело было в связи....повозился с настройками - все работает..а передачу надежной я опять таки сделал - правильно реализовал кусочную передачу файла...так что тему мона нафиг
Please register or login to write.
Firm of day
Вы также можете добавить свою фирму в каталог IT-фирм, и публиковать статьи, новости, вакансии и другую информацию от имени фирмы.
Подробнее
Contributors
  0000
advanced
Submit