Je suis en train de faire une appli telnet. Et vu qu'elle va tourner sur le port 80, je voudrais faire en sorte de rejeter les navigateurs HTTP proprement.
Voici mon code :
Code :
- else if (input.IndexOf("HTTP" ) > -1 && input.IndexOf("GET " ) == 0)
- {
- System.Console.WriteLine("http client" );
- serverStreamWriter.WriteLine("\n<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\"><html><head><title>MagicMUD</title></head><body>This server doesn't run a HTTP server. Please use a telnet client to use it!</body></html>" );
- serverStreamWriter.Flush();
- // Total n'importe quoi ?
- serverStreamReader.Close();
- serverStreamWriter.Close();
- serverSocket.Shutdown(System.Net.Sockets.SocketShutdown.Both);
- tcpServerListener.Stop();
- System.Diagnostics.EventLog.WriteEntry("MagicMUD", "Client was a HTTP client", System.Diagnostics.EventLogEntryType.Information, 15);
- return false;
- }
|
Seulement, il y a un truc qui manque, car IE ne reçoit rien, et charge indéfiniment.
Pourtant, le serveur tourne correctement. Une requête HTTP envoyée par telnet me retourne bien le résulat.
Qu'est-ce qu'il manque ?
Lorsque je fait un telnet sur forum.hardware.fr, j'obtiens ceci :
<html>
<head>
<META HTTP-EQUIV="Refresh" CONTENT="0;URL=http://forum.hardware.fr/forum.php3">
</HEAD>
<body>
</body>
</html> |
Perte de la connexion à l'hôte.
La même sur mon serveur :
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><title>MagicMUD</title></head><body>This serve
r doesn't run a HTTP server. Please use a telnet client to use it!</body></html>
Perte de la connexion à l'hôte. |
Soit la même chose
Et pourtant HFR ça marche et pas moi
Par contre, un GET / sur mon site (IIS) ne produit rien, au bout du timeout, je reçois un BadRequest error Donc impossible de savoir ce que renvois IIS (il doit y avoir des headers HTTP c'est pas possible autrement)