Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

C#: Prüfen ob Netzwerkverbindung noch besteht

Empfohlene Antworten

Veröffentlicht

Hallo,

ich habe in meiner Anwendung ein Socket definiert.

Laut MSDN kann ich, zu meinem ClientSocket eine leere Zeichenfolge senden (also 0 Byte).

Bei mir funktioniert das jedoch nicht. Also jedenfalls kommt beim Client nichts an...

Gruß

Steinadler

Ist das immer noch dasselbe Problem wie hier?

Bei mir funktioniert das jedoch nicht. Also jedenfalls kommt beim Client nichts an...
Du schickst 0 Bytes. Da kann nichts ankommen. Das ist ja auch nicht Sinn der Sache. Das Senden von 0 Bytes aktualisiert nur das Connected-Property.

Bei mir funktioniert das prima. Zeig doch mal den Code.

  • Autor

Hier mal mein Code:

		public bool IsConnected

		{

			get

			{

				try

				{

					byte[] buffer = new byte[1];


					m_oTelnetSocket.Blocking = false;

					m_oTelnetSocket.Send(buffer, 0, 0, 0);


					return m_oTelnetSocket.Connected;

				}

				catch

				{

					return false;

				}

			}

		}

Das hier ist eine Eigenschaft meiner ServerKlasse.

Diese wird von dem HauptThread in Abständen aufgerufen.

Müsste doch gehen, oder?

  • Autor

Hab mal was zusammengebaut.

Normalerweise müsste sich doch die Anwendung fehlerfrei beenden, wenn Das Socket auf dem Client geschlossen wurde, oder?

(Das Fenster dürfte praktisch nie angezeigt werden).

Kann das mal jemand so testen??

using System;

using System.Drawing;

using System.Collections;

using System.ComponentModel;

using System.Windows.Forms;

using System.Data;

using System.Net.Sockets;

using System.Net;


namespace TestAppNet

{

	/// <summary>

	/// Zusammenfassung für Form1.

	/// </summary>

	public class Form1 : System.Windows.Forms.Form

	{

		/// <summary>

		/// Erforderliche Designervariable.

		/// </summary>

		private System.ComponentModel.Container components = null;

		IPEndPoint	m_oLocalEndPoint = null;

		Socket m_oListenSocket	= null;			

		Socket m_oTelnetSocket	= null;


		public Form1()

		{

			InitializeComponent();


			m_oLocalEndPoint = new IPEndPoint(IPAddress.Parse("192.168.232.233"), 23);

			m_oListenSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);


			m_oListenSocket.Bind(m_oLocalEndPoint);

			m_oListenSocket.Listen(2);

			m_oTelnetSocket = m_oListenSocket.Accept();

			while(m_oTelnetSocket.Connected)

			{

				m_oTelnetSocket.Send(new byte[1], 0, 0, 0);

			}

		}


		protected override void Dispose( bool disposing )

		{

			if( disposing )

			{

				if (components != null) 

				{

					components.Dispose();

				}

			}

			base.Dispose( disposing );

		}


		#region Vom Windows Form-Designer generierter Code

		/// <summary>

		/// Erforderliche Methode für die Designerunterstützung. 

		/// Der Inhalt der Methode darf nicht mit dem Code-Editor geändert werden.

		/// </summary>

		private void InitializeComponent()

		{

			this.components = new System.ComponentModel.Container();

			this.Size = new System.Drawing.Size(300,300);

			this.Text = "Form1";

		}

		#endregion


		[STAThread]

		static void Main() 

		{

			Application.Run(new Form1());

		}

	}

}

  • Autor

Ist wirklich etwas komisch.

Trotzdem danke.

Funktioniert ausgezeichnet mit deiner Variante.

Geht diese denn mit einem C#-Client ebenfalls?

Vielleicht hätte ich dazuschreiben sollen, dass ich nen Telnet-Client benutze...

Gruß

Steinadler

Geht diese denn mit einem C#-Client ebenfalls?
Bei mir geht's jedenfalls.

Vielleicht hätte ich dazuschreiben sollen, dass ich nen Telnet-Client benutze...
Je mehr Informationen du über den Fehler bzw. die Umstände, unter denen er auftritt, liefern kannst, desto besser. ;)

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.