anchor.diff:  procedure TRawSocket.SetConnectInfo(const pvAddr: string; pvPort: Integer);
   begin
     FillChar(FSockaddr, SizeOf(sockaddr_in), 0);
  -  FSockaddr.sin_family := AF_INET;
  -  FSockaddr.sin_port := htons(pvPort);
  -  FSockaddr.sin_addr.s_addr :=inet_addr(MarshaledAString(UTF8Encode(pvAddr)));
  +  Psockaddr_in(@FSockaddr[0])^.sin_family := AF_INET;
  +  Psockaddr_in(@FSockaddr[0])^.sin_port := htons(pvPort);
  +  Psockaddr_in(@FSockaddr[0])^.sin_addr.s_addr :=inet_addr(MarshaledAString(UTF8Encode(pvAddr)));
   end;
   
   function TRawSocket.SetNonBlock(pvBlock:Boolean): Integer;
  
positive.code: {$ENDIF}
  
  type
    TSocketState = (ssDisconnected, ssConnected, ssConnecting, ssListening, ssAccepting);
  
    TRawSocket = class(TObject)
    private
      FSockaddr: sockaddr_in;
      FSocketHandle:THandle;
      procedure CheckDestroyHandle;
    public
  
negative.code: 
  function TRawSocket.Connect(const pvAddr: string; pvPort: Integer): Boolean;
  begin
    if FIPVersion = IP_V6 then
    begin
      FillChar(FSockaddr, SizeOf(FSockaddr), 0);
      Psockaddr_in6(@FSockaddr[0])^.sin6_port := htons(pvPort);
      Psockaddr_in6(@FSockaddr[0])^.sin6_family := AF_INET6;
      if not TranslateStringToTInAddr(pvAddr, FSockaddr[0], IP_V6) then
      begin
        raise Exception.CreateFmt('ǷIP[%s], ʧ', [pvAddr]);
      end;
  
      Result := Posix.SysSocket.Connect(FSocketHandle,
        Psockaddr(@FSockaddr[0])^, SizeOf(sockaddr_in6))  = 0;
    end else
    begin
      FillChar(FSockaddr, SizeOf(FSockaddr), 0);
      Psockaddr_in(@FSockaddr[0])^.sin_family := AF_INET;
      Psockaddr_in(@FSockaddr[0])^.sin_port := htons(pvPort);
      Psockaddr_in(@FSockaddr[0])^.sin_addr.s_addr :=inet_addr(MarshaledAString(UTF8Encode(pvAddr)));
      Result := Posix.SysSocket.Connect(FSocketHandle, Psockaddr(@FSockaddr[0])^, sizeof(sockaddr_in))  = 0;
    end;
  
  end;
  
  