C# - eine bestehende Verbindung wurde abgebrochen, indem die software in Ihre host-Maschine-Fehler

Baue ich ein Mock-Server mit TCPListener.

Als ich versuchte, meine debug-code durch ausführen der client, ich war in der Lage zu Lesen, die Anfrage an den server. Aber auf der client-Seite, wird eine Ausnahme geworfen. Hier ist die Ausnahme, ich habe aus dem trace:

System.ServiceModel.CommunicationException: Die Socketverbindung wurde abgebrochen. Dies könnte verursacht werden durch einen Fehler bei der Verarbeitung Ihrer Nachricht oder eine receive-timeout überschritten wird, die von dem remote-host, oder einer zugrunde liegenden Netzwerk-Ressourcen-Problem. Lokale socket-timeout war '00:05:00'. ---> System.IO.IOException: Unable to read data from the transport connection: Eine bestehende Verbindung wurde abgebrochen, indem die software in Ihre host-Maschine. ---> System.Net.Sockets.SocketException: Eine bestehende Verbindung wurde abgebrochen, indem die software in Ihre host-Maschine

Hier ist der code, der ich auf dem server implementiert:

TcpClient client = listener.AcceptTcpClient();
NetworkStream nwStream = client.GetStream();
byte[] buffer = new byte[client.ReceiveBufferSize];
int bytesRead = nwStream.Read(buffer, 0, client.ReceiveBufferSize);
var dataReceived = Encoding.ASCII.GetString(buffer, 0, bytesRead);

byte[] sendBytes = null;
try
{
    var output = "POST HTTP/1.1 200 OK\r\n";
    output += "Server: Apache-Coyote/1.1\r\n";
    output += "Content-Type: application/soap+xml\r\n";
    output += "Content-Length: 632\r\n";
    output += "Date: Thu, 06 Aug 2015 02:06:39 GMT\r\n\r\n";
    output +=
        "<S:Envelope xmlns:S=\"http://www.w3.org/2003/05/soap-envelope\"><S:Header></S:Header><S:Body></S:Body></S:Envelope>";
    sendBytes = Encoding.ASCII.GetBytes(output);
    nwStream.Write(sendBytes, 0, sendBytes.Length);
    nwStream.Flush();
}
catch (SocketException se)
{
    throw;
}

client.Close();

Bearbeiten

Ich habe auch versucht zu deaktivieren meiner firewall aber die Ausnahme weiterhin Auftritt.

  • Schließen Sie die Verbindung, bevor der client hat eine chance hatte, zum Lesen der Daten. NIEMALS in der Nähe einer Verbindung auf den server. Der Kunde sollte immer öffnen Sie die Verbindung und schließen der Verbindung. Zum schließen der Anwendung auf dem server, capture the close-Ereignis, die auftreten, wenn der client die Verbindung schließt.
InformationsquelleAutor Ray | 2015-08-11
Schreibe einen Kommentar