Mit Webserver kommunizieren

yan1

Erfahrenes Mitglied
Hi,

ich möchte gerne mit einem Webserver (http://www.worldofcrime.de) kommunizieren.
Hintergründe: Ich möchte in diesem Onlinespiel programmgesteuert mit Autos herumfahren und Drogen dealen, wenn ich nicht gerade selbst kann...

Ich möchte den Server zum Beispiel das schicken:

Code:
GET /index.php?group=user&module=parkinglot HTTP/1.1
Host: cluster1.worldofcrime.de
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; de-DE; rv:1.7.12) Gecko/20050919 Firefox/1.0.7
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Language: de-de,de;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Referer: http://cluster1.worldofcrime.de/index.php?banner=on
Cookie: login_tracker=Mk1dT2EqRDxXJU57SlLcW0Tk1uRUV1A%3D; PHPSESSID=004373dd47da168f667486f01d78d7de

und dann die antwort des servers auf einen string speichern und auswerten in diesem fall:

Code:
HTTP/1.x 200 OK
Date: Thu, 25 May 2006 15:44:14 GMT
Server: Apache/1.3.34 (Debian) PHP/4.4.0-4
X-Powered-By: PHP/4.4.0-4
Set-Cookie: PHPSESSID=004373dd47da168f667486f01d78d7de; path=/
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Keep-Alive: timeout=1, max=100
Connection: Keep-Alive
Transfer-Encoding: chunked
Content-Type: text/html

und danach der Seitenquelltext..

Wie kann ich das anstellen in C#
Mit dieser Klasse: System.Net.Sockets.TcpClient habe ich mich schon gespielt, ich glaube das ist die richtige, aber ich bekomme es einfach nicht hin....

Danke im Vorraus
 
ich habs jetzt mal so probiert

C#:
        public WocConnection()
        {
            System.Net.Sockets.TcpClient socket = new TcpClient("cluster1.worldofcrime.de", 80);
            Stream stream = socket.GetStream();
            StreamReader reader = new StreamReader(stream);
            StreamWriter writer = new StreamWriter(stream);

            string myRequest = "GET /index.php HTTP/1.1";
            
            writer.Write(myRequest);            //anfrage senden
            string antwort = "";
            while (!reader.EndOfStream)         //bis zum ende immer wieder ein char rauslesen
            {
                char[] auslese = new char[1];
                reader.ReadBlock(auslese, 0, 1);
                antwort += auslese[0].ToString();
            }
        }

aber er bleibt einfach immer bei der while bedinung reader.endofstream stehen, und geht nicht weiter, ich weiss nicht auf was der wartet!
 
hat keiner ne idee?

Das ist Sch****, muss ich C,C++ .... kann ich aber fast gar nich..
 
Vielleicht hilft dir das:


PHP:
// Starte Abfrageschleife auf Client-Verbindung
while (true)
{
	Socket DActiveSocket        = DListener.AcceptSocket();

	if (DActiveSocket.Connected)
	{
            NetworkStream my_stream = new NetworkStream(DActiveSocket);
            StreamReader DStreamReader = new StreamReader(my_stream);

            if (my_stream.CanRead)
            {
                while (my_stream.DataAvailable)
                {
                    // Lese eine Zeile des Streams aus...
                    string msg = DStreamReader.ReadLine();
                }

}
 
danke, aber das habe ich auch schon ausprobiert...

sobald ich irgendwas aus dem stream lese, bleibt das problem stehen.....
 
außerdem mag ich ja nicht den Server spielen, sondern eher den Browser, der die Anfragen zum Server schickt, und Antworten zurück bekommt, und diese dann Auswertet
 
Hi yan1!

Hast Du es schonmal mit der HTTPWebRequest Klasse probiert?
Sollte wesentlich einfacher sein.... ;)

Such mal hier im Forum danach und melde Dich einfach wieder,
sofern es dann noch Probleme geben sollte.

MfG,
cosmo

PS: Ich hasse solche langweiligen "den ganze Tag auf ner Homepage vergeuden Spiele".
Wenn Dich aber mal bei einem Egoshooter online cheaten sehe geh ichs petzen. :rolleyes: :p
 
Ok, erstmal Danke für eure Beiträge!

Ich habe mir diese Regel durchgelesen und werde mich bemühen, keine Einzeiler mehr zu schreiben und meine Deutsch Kenntnisse auszunutzen *g*.

Also, ich habe natürlich schon versucht, den input String auszugeben, aber wie gesagt, mein Programm kommt nicht so weit.

Sobald ich den Befehl Stream.Read(); oder StreamReader.ReadLine(); oder sonstige Input Befehle aufrufe, bleibt das Programm genau bei diesem Befehl stehen (Bis zum TimeOut, etwa 5 min. später geht es weiter, und gibt einen leeren String aus).

Ich werde mit HTTPWebRequest probieren, mal sehen obs was nutzt.

PS: Ich würde das nicht cheaten nennen... es is legal ;-) und bei CS oder AAO würd ich NIEEE cheaten (!)
 
Zurück