Я создаю приложение для WP7. И я работаю над etablishing соединение TCPcatching SocketException in socket.connectAysnc
код
namespace TCP
{
public class SocketEventArgsExtension : SocketAysncEventArgs
{
public EventHandler<SocketAysncEventArgs> _onConnectionCompleted;
public OnCompleted(EventHandler<SocketAysncEventArgs> handler)
{
base.completed+=handler;
_onConnectionCompleted=handler;
}
}
}
namespace TCP {
public class TCPSocket: Socket
{
public TCPSocket():base(all arguments)
public bool ConnectAsync(SocketEventArgsExtension socketArgsExtension)
{
try{
if (!base.ConnectAsync(socketArgsExtension))
{
socketArgsExtension.SocketActionIfCompletedSynchronously(socketAsyncEventArgs);
}
}catch(SocketException e)
{
this.ConnectAsync(socketArgsExtension);
}
}
}
}
namespace TCP
{
public class connection
{
public void func()
{
try
{
Socket s= new TCPSocket();
var Socketargs= new SocketEventArgsExtension() {RemoteEndPoint=_hostEntry}; //_hostEntry is DndEndPoint;
socketArgs.Oncompleted((o,e)=>Somecallback(e));
s.connectAsync(SocketArgs);
}catch(Exception e)
{
}
}
}
Проблема
Теперь моя проблема Когда я кормлю _hostEntry с адресом сервера, который не существует, а затем попытаться отладка
Он выбрасывает исключение
System.IO.FileNotFoundException
с деталями
{ "Файл или сборка имя 'System.Net.debug.resources, Version = 2.0.5.0, Culture = EN-US, PublicKeyToken = 7cec85d7bea7798e', или один его зависимости, не был найден. "}
Теперь, когда я нажимаю продолжить
снова Исключение происходит
System.Net.Sockets.SocketException произошло сообщение = попытка подключения не удалась, поскольку связанная сторона не ответила должным образом по истечении определенного периода времени или не удалось установить соединение, потому что подключенный хост не смог ответить ErrorCode = 10060 StackTrace: в System.Net.Sockets.Socket.DoWSAConnectOrSendTo (SocketAsyncEventArgs args) в системе. Net.Sockets.Socket.DoWSAConnectByName (SocketAsyncEventArgs арг) на System.Net.Sockets.Socket.WSAConnectByNameAsyncRequest.doRequest() в System.Net.Sockets.Socket.AsyncRequest.handleRequest() в System.Net.Sockets.Socket .SocketAsyncRequestManager.WorkerThread.doWork() в System.Net.Sockets.Socket.SocketAsyncRequestManager.WorkerThread.doWorkI (Object o) в System.Threading.ThreadPool.WorkItem.WaitCallback_Context (состояние объекта) в System.Threading.ExecutionContext.Run (ExecutionContext ExecutionContext, ContextCallback обратного вызова, состояние объекта) в System.Threading.ThreadPool.WorkItem.doWork (о) Объект в System.Threading.Timer.ring()
хотя Я улавливаю Исключения, это не проходит через блок catch.Rather запрашивает вышеупомянутые исключения в диалоговом окне.
Во время отладки я выбрал перерыв, когда происходит исключение
Разве второе исключение не отправляется в ваш блок catch, когда нажимать continue? – jgauffin
@jgauffin Нет, это не – rakesh