Ankündigung

Einklappen
Keine Ankündigung bisher.

Seite loaden mittels HTTP Request

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Seite loaden mittels HTTP Request

    Hallo miteinander

    Ich würde gern wissen wie man in C# eine Seite wie zum beispiel google am besten cachen kann. Also wie kann ich das am besten code. Die C# bereich ist ja geschlossen, deshalb poste ich mal hier .
    [In Deckung schonmal geh..]

  • #2
    Zitat von ~Madin~
    Ich würde gern wissen wie man in C# eine Seite wie zum beispiel google am besten cachen kann.
    Das geht in C# sehr einfach! Im Prinzip musst du nur eine neue Berkeley Socket Schnittstelle implementieren um eine Verbindung zum Host herzustellen. Die Daten der HTML Seite kannst du in der Regel in einem String speichern.

    Die Daten dürfen aber nicht zu groß werden. Schau dir einfach den Code an. Ist kommentiert! Beispiel:

    Code:
    using System;
    using System.Text;
    using System.IO;
    using System.Net;
    using System.Net.Sockets;
    
    namespace sockethttpreveive
    {
        public class GetSocket
        {
            private static Socket ConnectSocket(string server, int port)
            {
                Socket s = null;
                IPHostEntry hostEntry = null;
    
                // Get host related information.
                hostEntry = Dns.Resolve(server);
    
                // Loop through the AddressList to obtain the supported AddressFamily. This is to avoid
                // an exception that occurs when the host IP Address is not compatible with the address family
                // (typical in the IPv6 case).
                foreach (IPAddress address in hostEntry.AddressList)
                {
                    IPEndPoint ipe = new IPEndPoint(address, port);
                    Socket tempSocket =
                        new Socket(ipe.AddressFamily, SocketType.Stream, ProtocolType.Tcp);
    
                    tempSocket.Connect(ipe);
    
                    if (tempSocket.Connected)
                    {
                        s = tempSocket;
                        break;
                    }
                    else
                    {
                        continue;
                    }
                }
                return s;
            }
    
            // This method requests the home page content for the specified server.
            private static string SocketSendReceive(string server, int port)
            {
                string request = "GET / HTTP/1.1\r\nHost: " + server +
                    "\r\nConnection: Close\r\n\r\n";
                Byte[] bytesSent = Encoding.ASCII.GetBytes(request);
                Byte[] bytesReceived = new Byte[256];
    
                // Create a socket connection with the specified server and port.
                Socket s = ConnectSocket(server, port);
    
                if (s == null)
                    return ("Connection failed");
    
                // Send request to the server.
                s.Send(bytesSent, bytesSent.Length, 0);
    
                // Receive the server home page content.
                int bytes = 0;
                string page = "Default HTML page on " + server + ":\r\n";
    
                // The following will block until te page is transmitted.
                do
                {
                    bytes = s.Receive(bytesReceived, bytesReceived.Length, 0);
                    page = page + Encoding.ASCII.GetString(bytesReceived, 0, bytes);
                }
                while (bytes > 0);
    
                return page;
            }
    
            public static void Main(string[] args)
            {
                string host;
                int port = 80;
    
                if (args.Length == 0)
                    // If no server name is passed as argument to this program, 
                    // use the current host name as the default.
                    // host = Dns.GetHostName(); This funtion returns the actual local IP
                    host = "www.codeplanet.eu";
                else
                    host = args[0];
    
                string result = SocketSendReceive(host, port);
                Console.WriteLine(result);
            }
        }
    }
    BTW: Das C# Forum bleibt auch noch zu, weil ich und GAGA im Moment keine Zeit haben. Prüfungen stehen an . Außerdem haben wir seit dem Update des Styles einige Probleme mit der Forumdarstellung. Mal sehen was da nicht stimmt...

    cu

    Kommentar

    Lädt...
    X