Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Socket Timeout wenn IP nicht existiert
Ploetzi
myCSharp.de - Member

Avatar #avatar-2940.gif


Dabei seit:
Beiträge: 320

Themenstarter:

Socket Timeout wenn IP nicht existiert

beantworten | zitieren | melden

Hallo,
wenn die IP adresse nicht erreichbar ist, sollte eine Exception geworfen werden.
Wird aber nicht. Zumindest nicht in der Entwicklungsumgebung Mono. In VS habe ich das nicht getestet.

Aber es ist ansich C#, vl. einfach einen Fehler gemacht?

		 string checkphweb(string ipadresse,int port)
		{
		
			string getString = "GET /Serverstatus.ashx HTTP/1.1\r\nHost: www.mysite.mobi\r\nConnection: Close\r\n\r\n";
			Encoding ASCII = Encoding.ASCII;
			Byte[] Byteofstring = ASCII.GetBytes (getString);
			Byte[] Empfangsbyte = new Byte[256];
			Socket socket = null;
			String ergebnis = null;
			bool connectworked=false;
			bool errorreceive=false;
			try 			{
				IPEndPoint ip = new IPEndPoint (IPAddress.Parse (ipadresse), port);
				socket = new Socket (ip.AddressFamily, SocketType.Stream, ProtocolType.Tcp);
			socket.ReceiveTimeout=100;
			socket.SendTimeout=100;
				socket.Connect (ip);
				connectworked=true;
			} catch (SocketException ex) {
				Console.WriteLine ("Source:" + ex.Source);
				Console.WriteLine ("Message:" + ex.Message);
			}
			Int32 bytes= new Int32();
			try{
			socket.Send (Byteofstring, Byteofstring.Length, 0);
			 bytes = socket.Receive (Empfangsbyte, Empfangsbyte.Length, 0);
			ergebnis = ergebnis + ASCII.GetString (Empfangsbyte, 0, bytes);
			}catch{
				errorreceive=true;
			};
			try{
			while (bytes > 0) {
				bytes = socket.Receive (Empfangsbyte, Empfangsbyte.Length, 0);
				ergebnis = ergebnis + ASCII.GetString (Empfangsbyte, 0, bytes);
			}
			}catch{};try{
			socket.Close ();}catch{};
			if(connectworked==true &&errorreceive==true)
				ergebnis="error on receive";
			if(connectworked==false)
				ergebnis="Wrong";
			System.Diagnostics.Debug.WriteLine("string:"+ergebnis);
			
			return ergebnis;
		}
private Nachricht | Beiträge des Benutzers
dN!3L
myCSharp.de - Experte

Avatar #avatar-2985.png


Dabei seit:
Beiträge: 3138

beantworten | zitieren | melden

Könntest du dir mal bitte angewöhnen, deine Fragen ordentlich zu stellen und uns nicht immer nur solch Brocken hinzuwerfen? Du hast jetzt schon knapp 300 Beiträge, allerdings schreibst du deine Fragen wie ein Forenneuling und es hat den Anschein, als hättest du noch nie was von [Hinweis] Wie poste ich richtig? gehört...

Was erwartest du, was die Methode macht? Was macht sie stattdessen?
Da wird schon eine Exception geworfen, allerdings fängst du die ja alle wieder ab. Was also erwartest du genau bei "sollte eine Exception geworfen werden"?
private Nachricht | Beiträge des Benutzers
mogel
myCSharp.de - Member

Avatar #avatar-3347.jpg


Dabei seit:
Beiträge: 158

beantworten | zitieren | melden

Moin,

nicht nachvollziehbar
Fehler
Source:System
Message:Operation on non-blocking socket would block

MonoDevelop 2.4 & Mono 2.6.7 ... außerdem ... enn es keinen besonderen Grund gibt das HTTP-Protokoll von Hand nach zu basteln, nimm den WebClient

noch was

            }catch{
                errorreceive=true;
            };
            try{
            while (bytes > 0) {
                bytes = socket.Receive (Empfangsbyte, Empfangsbyte.Length, 0);
                ergebnis = ergebnis + ASCII.GetString (Empfangsbyte, 0, bytes);
            }
            }catch{};try{
            socket.Close ();}catch{};

ich sehe 3 catch die Dir keine einzige Exception ausgeben ... das macht sich für Fehlersuche nicht wirklich super

hand, mogel
private Nachricht | Beiträge des Benutzers
Ploetzi
myCSharp.de - Member

Avatar #avatar-2940.gif


Dabei seit:
Beiträge: 320

Themenstarter:

beantworten | zitieren | melden

Hallo,
danke erstmal für die Antwort.
Den Grund gibt es leider doch. Weil parallel ein System abgregriffen wird, bei welchem kein normaler Webserver läuft.

Der Fehler tritt offensichtl. nur unter MonoTouch auf.

@Forenposter davor, ich bemühe mich ab nun !
private Nachricht | Beiträge des Benutzers