예제 #1
0
 public static bool Connect(BaseCrypto cryptoProvider, IPEndPoint ipEndPoint)
 {
     if (cryptoProvider == null)
     {
         throw new ArgumentNullException("cryptoProvider");
     }
     if (ipEndPoint == null)
     {
         throw new ArgumentNullException("ipEndPoint");
     }
     Network.Disconnect();
     try
     {
         Socket socket = new Socket(ipEndPoint.AddressFamily, SocketType.Stream, ProtocolType.Tcp);
         try
         {
             socket.SetSocketOption(SocketOptionLevel.Tcp, SocketOptionName.Debug, true);
         }
         catch (Exception ex)
         {
             Debug.Trace("SetSocketOption failed.");
             Debug.Error(ex);
         }
         Network.ProcessAsyncConnect(socket, socket.BeginConnect((EndPoint)ipEndPoint, (AsyncCallback)null, (object)null));
         Network._networkContext = new NetworkContext(socket, cryptoProvider);
         Network._networkContext.ConnectionLostCallback = (Callback)(() =>
         {
             Gumps.MessageBoxOk("Connection lost", true, new OnClick(Engine.DestroyDialogShowAcctLogin_OnClick));
             Network._networkContext = (NetworkContext)null;
             Cursor.Hourglass = false;
             Engine.amMoving = false;
         });
         return(true);
     }
     catch (SocketException ex)
     {
         return(false);
     }
 }
예제 #2
0
 public static void Close()
 {
     Network.Disconnect();
 }
예제 #3
0
 public static void Disconnect()
 {
     Network.Disconnect(true);
 }