@@ -542,6 +542,9 @@ public void SetRPCEndHandler(EventHandler<MessageObject> handler)
542542 PRpcState . SetRPCEndHandler ( handler ) ;
543543 }
544544
545+ protected bool IsVerifyAddress = true ;
546+ protected IPEndPoint ConnectEndPoint ;
547+
545548 /// <summary>
546549 /// 连接到远程主机。
547550 /// </summary>
@@ -556,32 +559,42 @@ public virtual void Connect(Uri address, object userData = null)
556559 PSocket = null ;
557560 }
558561
559- bool isVerify = true ;
560- IPEndPoint endPoint = null ;
562+ IsVerifyAddress = true ;
563+ ConnectEndPoint = null ;
561564 if ( IPAddress . TryParse ( address . Host , out var ipAddress ) )
562565 {
563- endPoint = new IPEndPoint ( ipAddress , address . Port ) ;
566+ ConnectEndPoint = new IPEndPoint ( ipAddress , address . Port ) ;
564567 }
565568 else
566569 {
567- var ipHost = Utility . Net . GetHostIPv4 ( address . Host ) ;
568- if ( IPAddress . TryParse ( ipHost , out ipAddress ) )
570+ try
569571 {
570- endPoint = new IPEndPoint ( ipAddress , address . Port ) ;
572+ var ipHost = Utility . Net . GetHostIPv4 ( address . Host ) ;
573+ if ( IPAddress . TryParse ( ipHost , out ipAddress ) )
574+ {
575+ ConnectEndPoint = new IPEndPoint ( ipAddress , address . Port ) ;
576+ }
577+ else
578+ {
579+ // 获取IP失败
580+ Log . Error ( $ "IP address is invalid.{ address . Host } ") ;
581+ IsVerifyAddress = false ;
582+ Close ( ) ;
583+ PSocket = null ;
584+ }
571585 }
572- else
586+ catch ( Exception e )
573587 {
574- // 获取IP失败
575- Log . Error ( $ "IP address is invalid.{ address . Host } ") ;
576- isVerify = false ;
588+ Log . Error ( $ "IP address is invalid.{ address . Host } { e . Message } ") ;
589+ IsVerifyAddress = false ;
577590 Close ( ) ;
578591 PSocket = null ;
579592 }
580593 }
581594
582- if ( isVerify )
595+ if ( IsVerifyAddress && ConnectEndPoint != null )
583596 {
584- switch ( endPoint . AddressFamily )
597+ switch ( ConnectEndPoint . AddressFamily )
585598 {
586599 case System . Net . Sockets . AddressFamily . InterNetwork :
587600 PAddressFamily = AddressFamily . IPv4 ;
@@ -592,7 +605,7 @@ public virtual void Connect(Uri address, object userData = null)
592605 break ;
593606
594607 default :
595- string errorMessage = Utility . Text . Format ( "Not supported address family '{0}'." , endPoint . AddressFamily ) ;
608+ string errorMessage = Utility . Text . Format ( "Not supported address family '{0}'." , ConnectEndPoint . AddressFamily ) ;
596609 if ( NetworkChannelError != null )
597610 {
598611 NetworkChannelError ( this , NetworkErrorCode . AddressFamilyError , SocketError . Success , errorMessage ) ;
0 commit comments