@@ -556,28 +556,54 @@ public virtual void Connect(Uri address, object userData = null)
556556 PSocket = null ;
557557 }
558558
559- EndPoint endPoint = new IPEndPoint ( IPAddress . Parse ( address . Host ) , address . Port ) ;
560- switch ( endPoint . AddressFamily )
559+ bool isVerify = true ;
560+ IPEndPoint endPoint = null ;
561+ if ( IPAddress . TryParse ( address . Host , out var ipAddress ) )
561562 {
562- case System . Net . Sockets . AddressFamily . InterNetwork :
563- PAddressFamily = AddressFamily . IPv4 ;
564- break ;
563+ endPoint = new IPEndPoint ( ipAddress , address . Port ) ;
564+ }
565+ else
566+ {
567+ var ipHost = Utility . Net . GetHostIPv4 ( address . Host ) ;
568+ if ( IPAddress . TryParse ( ipHost , out ipAddress ) )
569+ {
570+ endPoint = new IPEndPoint ( ipAddress , address . Port ) ;
571+ }
572+ else
573+ {
574+ // 获取IP失败
575+ Log . Error ( $ "IP address is invalid.{ address . Host } ") ;
576+ isVerify = false ;
577+ Close ( ) ;
578+ PSocket = null ;
579+ }
580+ }
565581
566- case System . Net . Sockets . AddressFamily . InterNetworkV6 :
567- PAddressFamily = AddressFamily . IPv6 ;
568- break ;
582+ if ( isVerify )
583+ {
584+ switch ( endPoint . AddressFamily )
585+ {
586+ case System . Net . Sockets . AddressFamily . InterNetwork :
587+ PAddressFamily = AddressFamily . IPv4 ;
588+ break ;
569589
570- default :
571- string errorMessage = Utility . Text . Format ( "Not supported address family '{0}'." , endPoint . AddressFamily ) ;
572- if ( NetworkChannelError != null )
573- {
574- NetworkChannelError ( this , NetworkErrorCode . AddressFamilyError , SocketError . Success , errorMessage ) ;
575- return ;
576- }
590+ case System . Net . Sockets . AddressFamily . InterNetworkV6 :
591+ PAddressFamily = AddressFamily . IPv6 ;
592+ break ;
593+
594+ default :
595+ string errorMessage = Utility . Text . Format ( "Not supported address family '{0}'." , endPoint . AddressFamily ) ;
596+ if ( NetworkChannelError != null )
597+ {
598+ NetworkChannelError ( this , NetworkErrorCode . AddressFamilyError , SocketError . Success , errorMessage ) ;
599+ return ;
600+ }
577601
578- throw new GameFrameworkException ( errorMessage ) ;
602+ throw new GameFrameworkException ( errorMessage ) ;
603+ }
579604 }
580605
606+
581607 PSendState . Reset ( ) ;
582608 PReceiveState . PrepareForPacketHeader ( ) ;
583609 }
0 commit comments