ich versuche inialise einen tls Tunnel mit dem .net SslStream aber nach dem Stream zu öffnen erhalte ich immer folgende Fehlermeldung:.NET SslStream funktioniert nicht
„Daten kann nicht von der Transportverbindung lesen: Eine bestehende Verbindung wurde von der Software in Ihrem Host-Rechner abgebrochen. "
Nachdem ich eine Tls-Verbindung hergestellt und nach dem Senden einer zweiten Nachricht.
Ich habe nach einer Antwort für die letzten vier Tage gesucht, aber es gibt keine hilfreichen Informationen online!
edit: Ich versuche
talk.google.com zu verbinden, und ich bin das Codebeispiel aus MSDN verwenden. Der einzige Unterschied ist, dass ich Daten bin das Senden vor und wenn es Zeit ist, die Verwendung von TLS i wie folgt vor:
public void SecureStream()
{
netStream.Flush();
sslStream = new SslStream(netStream, false, new RemoteCertificateValidationCallback(ValidateServerCertificate), null);
sslStream.AuthenticateAsClient("talk.google.com");}
edit: ich den ersten Fehler (kleinen Fehler auf, wie ich die Sende wurde Handling) zu beseitigen verwaltet jetzt bekomme ich immer
"Daten können nicht von der Transportverbindung gelesen werden: Eine bestehende Verbindung wurde von der Software in Ihrem Host-Rechner abgebrochen."
edit2: Ich habe keine whitespaces gesendet. Ich habe den Nachrichtenübergabeteil neu geschrieben und ich habe immer noch das selbe Problem.
Ich beginne mit
String streamInit = "<stream:stream xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams' to='google.com' version='1.0'>";
client.Send(streamInit);
Dann auf erhalte ich habe folgendes
static void client_MessageReceived(SyncronousClient source, string Result)
{
if (Regex.IsMatch(Result, "<starttls xmlns=\"urn:ietf:params:xml:ns:xmpp-tls\"><required/></starttls>"))
{
String startTlS = "<starttls xmlns='urn:ietf:params:xml:ns:xmpp-tls'/>";
source.Send(startTlS);
}
else if (Regex.IsMatch(Result, "<proceed xmlns=\"urn:ietf:params:xml:ns:xmpp-tls\"/>"))
{
//Do TLS Magic
source.SecureStream();
String streamReInit = "<stream:stream xmlns='jabber:client'xmlns:stream='http://etherx.jabber.org/streams'to='google.com'version='1.0'>";
source.Send(streamReInit);
}
else if (Regex.IsMatch(Result, "<mechanisms xmlns=\"urn:ietf:params:xml:ns:xmpp-sasl\">"))
{
//String AuthType = "<auth xmlns='urn:ietf:params:xml:ns:xmpp-sasl' mechanism='X-GOOGLE-TOKEN'/>";
String AuthType = "<auth xmlns=\"urn:ietf:params:xml:ns:xmpp-sasl\" mechanism=\"PLAIN\"/>";
source.Send(AuthType);
}}
Das Problem könnte alles sein.Sie müssen viel spezifischer sein und Code und Informationen zu dem Server bereitstellen, mit dem Sie kommunizieren möchten. – Jonathan
Wenn Sie sagen, dass "... nicht funktioniert", ist es 90% Wahrscheinlichkeit, dass Sie schuld sind. –
ich sage nicht, es ist nicht meine Schuld, aber ich bin stecken und ich kann keinen Weg finden, wie es zu beheben .. – Marcom