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

  • »
  • Portal
  • |
  • Mitglieder
Beiträge von Ploetzi
Thema: Runtime Type Information (RTTI) in der Praxis
Am im Forum: Rund um die Programmierung

Hallo,
für eine Abschlussprüfung in 2 Tagen suche ich noch nach praktischen und praxisbezogenen Einsatzmoeglichkeiten von RTTI,.

Wer hat eine Idee?

mfg

Thema: switch case für Muster statt exakten Wert
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

ja das weis ich aber eg will ich ja das restl. muster vergleichen

Thema: switch case für Muster statt exakten Wert
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo,
ich habe Strings

CMD_12_asdf_123
CMDa_14_asdf_212


etc.
und wuerde nun gerne switch casen wobei die erste Zahl variieren kann,...
hat hier jemand eine Idee?

Thema: XML Node hinzufuegen
Am im Forum: Datentechnologien

oops, entschuldigung, das wusste ich e. Danke trotzdem.
Eigentlich wollte ich ein neues Element mit gleichen Attributen hinzufuegen und dann das Dokument wieder speichern.
Wie geht das?

Thema: XML Node hinzufuegen
Am im Forum: Datentechnologien

Hallo,
ich schaffe es nicht, ich lese eine XML ein.

mit folgendem Code:

 XmlDocument doc = new XmlDocument();
            doc.Load(main.getInstance().app_path + "\\Data\\user.xml");
            XmlElement root = doc.DocumentElement;
            foreach (XmlNode @daten in root.ChildNodes)
            {
                userdaten x = new userdaten();
                x.username= @daten.Attributes["NAME"].InnerText;
                x.passwort= @daten.Attributes["PASSWORT"].InnerText;
                main.getInstance()._WriteLog("Loaded User"+x.username);
                x.level=Convert.ToInt32(@daten.Attributes["LEVEL"].InnerText);
                allusers.Add(x);
            }

Jetzt wuerde ich der XML gerne wieder weitere atrribute hinzufuegen,...

dass geht mit appendchild oder?
wie mache ich das?

Thema: GZipStream: Nur ein Teil der Daten wird gezippt
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo,
also die HTML werden komplett gezippt, aber diese js hier:
wird nur oben gezippt:

	 function checkbrand()
  {
    $.ajax({
  		type: "GET",async:true,
  		url: "../settings/Brand/?time="+new Date().getTime(),
  		dataType: "html",
  		success: function(response) {
  			document.getElementById('brand1').value=response;
			}
  			});	
	
    }
	 function checkServerPort()
  {
    $.ajax({
  		type: "GET",async:true,
  		url: "../settings/ServerPort/?time="+new Date().getTime(),
  		dataType: "html",
  		success: function(response) {
  			document.getElementById('serverport1').value=response;
			}
  			});	
	
    }
	function checkAutomaticInit()
  {
    $.ajax({
  		type: "GET",async:true,
  		url: "../settings/AutomaticInit/?time="+new Date().getTime(),
  		dataType: "html",
  		success: function(response) {
  			document.getElementById('automaticinit1').value=response;
			}
  			});	
	
    }
	function checkDaemonNr()
  {
    $.ajax({
  		type: "GET",async:true,
  		url: "../settings/DaemonNr/?time="+new Date().getTime(),
  		dataType: "html",
  		success: function(response) {
  			document.getElementById('daemon1').value=response;
			}
  			});	
	
    }
	
	  function updateAutomaticInit()
  {
    $.ajax({
  		type: "GET",async:true,
  		url: "update/AutomaticInit/"+document.getElementById('automaticinit1').value+"?time="+new Date().getTime(),
  		dataType: "html",
  		success: function(response) {
	$('#info').text(response);
    $('#message').dialog('option', 'title', "Daten quittiert");
    $("#message").dialog('open');  
        }
      
  			});		
    }
	  function updateDaemonNr()
  {
    $.ajax({
  		type: "GET",async:true,
  		url: "update/DaemonNr/"+document.getElementById('daemon1').value+"?time="+new Date().getTime(),
  		dataType: "html",
  		success: function(response) {
	$('#info').text(response);
    $('#message').dialog('option', 'title', "Daten quittiert");
    $("#message").dialog('open');  
        }
      
  			});		
    }
	  function updateServerPort()
  {
    $.ajax({
  		type: "GET",async:true,
  		url: "update/ServerPort/"+document.getElementById('serverport1').value+"?time="+new Date().getTime(),
  		dataType: "html",
  		success: function(response) {
	$('#info').text(response);
    $('#message').dialog('option', 'title', "Daten quittiert");
    $("#message").dialog('open');  
        }
      
  			});		
    }
		  function updateBrand()
  {
    $.ajax({
  		type: "GET",async:true,
  		url: "update/Brand/"+document.getElementById('brand1').value+"?time="+new Date().getTime(),
  		dataType: "html",
  		success: function(response) {
	$('#info').text(response);
    $('#message').dialog('option', 'title', "Daten quittiert");
    $("#message").dialog('open');  
        }
      
  			});		
    }


Also nicht komplett gezippt

Thema: GZipStream: Nur ein Teil der Daten wird gezippt
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Bei mir wird bei einer groesseren 5KB Datei die obere haelfte gezippt, die untere ist blank zu lesen.

Thema: GZipStream: Nur ein Teil der Daten wird gezippt
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo,


fsSource = new FileStream("C:\\Test.html", FileMode.Open, FileAccess.Read, FileShare.Read);
                                bufferWrite = new byte[fsSource.Length];
                                fsSource.Read(bufferWrite, 0, bufferWrite.Length);
                               
                                fsDest = new FileStream("C:\\Test2.html", FileMode.OpenOrCreate, FileAccess.Write);
                                gzCompressed = new GZipStream(fsDest, CompressionMode.Compress,true);
                                gzCompressed.Write(bufferWrite, 0, bufferWrite.Length);
                                fsSource.Close();
                                gzCompressed.Close();
                                fsDest.Close();


leider verkleinert mir das Snippet nur einen Teil meiner HTML Datei , unten ist es alles original,...? Any ideas?

Thema: Forcieren Socket Close
Am im Forum: Netzwerktechnologien

namespace at.xxx.WebServerMobile
{
    using System;
    using System.IO;
    using System.Net;
    using System.Net.Sockets;
    using System.Text;
    using System.Threading;


    class httpserver
    {
        private object lockobject = new object();
        private TcpListener myListener;
        bool run = true;
        private int port; // Select any free port you wish
        
       
        //The constructor which make the TcpListener start listening on the
        //given port. It also calls a Thread on the method StartListen(). 
        public httpserver()
        {
            try
            {

                    port=Convert.ToInt32(Settings.ServerPort);
                    myListener = new TcpListener(port);
                    myListener.Start();
              
                main.getInstance()._WriteLog("httpserver: Web Server Running..on Port:"+port.ToString());
                //start the thread which calls the method 'StartListen'

                Thread th = new Thread(new ThreadStart(StartListen));
                th.Start();

            }
            catch (Exception e)
            {
                 main.getInstance()._WriteLog("httpserver: An Exception Occurred while Listening :" + e.ToString());
            }
        }


        /// <summary>
        /// Returns The Default File Name
        /// Input : WebServerRoot Folder
        /// Output: Default File Name
        /// </summary>
        /// <param name="sMyWebServerRoot"></param>
        /// <returns></returns>
        public string GetTheDefaultFileName(string sLocalDirectory)
        {
            StreamReader sr;
            String sLine = "";
            try
            {
                //Open the default.dat to find out the list
                // of default file
               // sr = new StreamReader("data\\Default.Dat");
                sr = new StreamReader(main.getInstance().app_path+"\\Data\\Default.Dat");
             
                while ((sLine = sr.ReadLine()) != null)
                {
                    main.getInstance()._WriteLog(sLine);
                    //Look for the default file in the web server root folder
                    if (File.Exists(sLocalDirectory + sLine) == true)
                        break;
                }
            }
            catch (Exception e)
            {
                 main.getInstance()._WriteLog("httpserver: An Exception Occurred in GetTheDefaultFilename("+sLocalDirectory+") : " + e.ToString());
            }

            if (File.Exists(sLocalDirectory + sLine) == true)
                return sLine;
            else
                return "";
        }

        public void closeports()
        {
            run = false;
            try
            {
                myListener.Server.Close();
            }
            catch { };
            try
            {
                myListener.Stop();
               
            }
            catch { };
        }

        /// <summary>
        /// This function takes FileName as Input and returns the mime type..
        /// </summary>
        /// <param name="sRequestedFile">To indentify the Mime Type</param>
        /// <returns>Mime Type</returns>
        public string GetMimeType(string sRequestedFile)
        {


            StreamReader sr;
            String sLine = "";
            String sMimeType = "";
            String sFileExt = "";
            String sMimeExt = "";
            try
            {
            // Convert to lowercase
            sRequestedFile = sRequestedFile.ToLower();

            int iStartPos = sRequestedFile.IndexOf(".");

            sFileExt = sRequestedFile.Substring(iStartPos);

            
                //Open the Vdirs.dat to find out the list virtual directories
                //sr = new StreamReader("data\\Mime.Dat");

            sr = new StreamReader(main.getInstance().app_path + "\\Data\\Mime.Dat");
                while ((sLine = sr.ReadLine()) != null)
                {

                    sLine.Trim();

                    if (sLine.Length > 0)
                    {
                        //find the separator
                        iStartPos = sLine.IndexOf(";");

                        // Convert to lower case
                        sLine = sLine.ToLower();

                        sMimeExt = sLine.Substring(0, iStartPos);
                        sMimeType = sLine.Substring(iStartPos + 1);

                        if (sMimeExt == sFileExt)
                            break;
                    }
                }
            }
            catch (Exception e)
            {
                main.getInstance()._WriteLog("httpserver: An Exception Occurred in GetMimeType(" + sRequestedFile + ") : " + e.ToString());
            }
        
            if (sMimeExt == sFileExt)
                return sMimeType;
            else
                return "";
        }



        /// <summary>
        /// Returns the Physical Path
        /// </summary>
        /// <param name="sMyWebServerRoot">Web Server Root Directory</param>
        /// <param name="sDirName">Virtual Directory </param>
        /// <returns>Physical local Path</returns>
        public string GetLocalPath(string sMyWebServerRoot, string sDirName)
        {
            try
            {
                main.getInstance()._WriteLog("Pfad:" + sMyWebServerRoot + sDirName.Replace("/", "\\").Split('?')[0]);
                if (File.Exists(sMyWebServerRoot + sDirName.Replace("/", "\\").Split('?')[0]))
                    return sMyWebServerRoot + sDirName.Replace("/", "\\").Split('?')[0];
                if (Directory.Exists(sMyWebServerRoot + sDirName.Replace("/", "\\").Split('?')[0]))
                    return sMyWebServerRoot + sDirName.Replace("/", "\\").Split('?')[0];
                else
                    return "";
            }
            catch (Exception e)
            {
                main.getInstance()._WriteLog("httpserver: An Exception Occurred in GetLocalPath(" + sMyWebServerRoot +","+sDirName+ ") : " + e.ToString());
            }
            return "";

        }



        /// <summary>
        /// This function send the Header Information to the client (Browser)
        /// </summary>
        /// <param name="sHttpVersion">HTTP Version</param>
        /// <param name="sMIMEHeader">Mime Type</param>
        /// <param name="iTotBytes">Total Bytes to be sent in the body</param>
        /// <param name="mySocket">Socket reference</param>
        /// <returns></returns>
        public void SendHeader(string sHttpVersion, string sMIMEHeader, int iTotBytes, string sStatusCode, ref Socket mySocket)
        {
            try{
            String sBuffer = "";

            // if Mime type is not provided set default to text/html
            if (sMIMEHeader.Length == 0)
            {
                sMIMEHeader = "text/html";  // Default Mime Type is text/html
            }

            sBuffer = sBuffer + sHttpVersion + sStatusCode + "\r\n";
            sBuffer = sBuffer + "Server: cx1193719-b\r\n";
            sBuffer = sBuffer + "Content-Type: " + sMIMEHeader + "\r\n";
            sBuffer = sBuffer + "Accept-Ranges: bytes\r\n";
            sBuffer = sBuffer + "Content-Length: " + iTotBytes + "\r\n\r\n";
            main.getInstance()._WriteLog("sent header:" + sBuffer);
            Byte[] bSendData = Encoding.ASCII.GetBytes(sBuffer);

            SendToBrowser(bSendData, ref mySocket);

             main.getInstance()._WriteLog("httpserver  Total Bytes : " + iTotBytes.ToString());
            }
            catch (Exception e)
            {
                main.getInstance()._WriteLog("httpserver: An Exception Occurred in SendHeader(" + sHttpVersion + "," + sMIMEHeader + "," + iTotBytes.ToString() + "," + sStatusCode + ") : " + e.ToString());
            }
        }

        private static httpserver instance;
        public static httpserver getInstance()
        {
            if (instance == null)
                instance = new httpserver();
            return instance;
        }
      

        /// <summary>
        /// Overloaded Function, takes string, convert to bytes and calls 
        /// overloaded sendToBrowserFunction.
        /// </summary>
        /// <param name="sData">The data to be sent to the browser(client)</param>
        /// <param name="mySocket">Socket reference</param>
        public void SendToBrowser(String sData, ref Socket mySocket)
        {
            SendToBrowser(Encoding.ASCII.GetBytes(sData), ref mySocket);
        }



        /// <summary>
        /// Sends data to the browser (client)
        /// </summary>
        /// <param name="bSendData">Byte Array</param>
        /// <param name="mySocket">Socket reference</param>
        public void SendToBrowser(Byte[] bSendData, ref Socket mySocket)
        {
            main.getInstance()._WriteLog("send to browser size" + bSendData.Length.ToString());
            int numBytes = 0;

            try
            {
                if (mySocket.Connected)
                {
                    if ((numBytes = mySocket.Send(bSendData, bSendData.Length, 0)) == -1)
                         main.getInstance()._WriteLog("httpserver: Socket Error cannot Send Packet");
                    else
                    {
                         main.getInstance()._WriteLog("httpserver: No. of bytes send "+numBytes.ToString());  
                    }
                }
                else
                     main.getInstance()._WriteLog("httpserver: Connection Dropped....");
            }
            catch (Exception e)
            {
                 main.getInstance()._WriteLog("httpserver: SendToBrowser("+bSendData.ToString()+")Error Occurred :  "+e.ToString());

            }
        }


        public static byte[] ReadFully(Stream stream, int initialLength)
        {
            // If we've been passed an unhelpful initial length, just
            // use 32K.
            if (initialLength < 1)
            {
                initialLength = 32768;
            }

            byte[] buffer = new byte[initialLength];
            int read = 0;

            int chunk;
            while ((chunk = stream.Read(buffer, read, buffer.Length - read)) > 0)
            {
                read += chunk;

                // If we've reached the end of our buffer, check to see if there's
                // any more information
                if (read == buffer.Length)
                {
                    int nextByte = stream.ReadByte();

                    // End of stream? If so, we're done
                    if (nextByte == -1)
                    {
                        return buffer;
                    }

                    // Nope. Resize the buffer, put in the byte we've just
                    // read, and continue
                    byte[] newBuffer = new byte[buffer.Length * 2];
                    Array.Copy(buffer, newBuffer, buffer.Length);
                    newBuffer[read] = (byte)nextByte;
                    buffer = newBuffer;
                    read++;
                }
            }
            // Buffer is now too big. Shrink it.
            byte[] ret = new byte[read];
            Array.Copy(buffer, ret, read);
            return ret;
        }




        //This method Accepts new connection and
        //First it receives the welcome massage from the client,
        //Then it sends the Current date time to the Client.
        public void StartListen()
        {

            int iStartPos = 0;
            String sRequest;
            String sDirName;
            String sRequestedFile;
            String sErrorMessage;
            String sLocalDir;
            String sMyWebServerRoot = main.getInstance().app_path + "\\MyWebServerRoot\\";
            String sPhysicalFilePath = "";
            String sFormattedMessage = "";
            String sResponse = "";

            while (run)
            {
                //Accept a new connection
                myListener.Start();
                Socket mySocket;
                try
                {
                    mySocket = myListener.AcceptSocket();
                }
                catch
                {
                    mySocket = new Socket(AddressFamily.InterNetwork,  SocketType.Stream,    ProtocolType.Tcp);
                    main.getInstance()._WriteLog("httpserver wollte Socket offnen aber beendet gerade");
                }
                  
               
                // main.getInstance()._WriteLog("httpserver: Socket Type " + mySocket.SocketType);
              
                if (mySocket.Connected)
                {
                   
                    main.getInstance()._WriteLog("httpserver: \nClient Connected!!\n==================\nCLient IP \n" +
                       mySocket.RemoteEndPoint.ToString());
                    //make a byte array and receive data from the client 
                    Byte[] bReceive = new Byte[1024];
                    string sBuffer="";
                    try
                    {
                        int i = mySocket.Receive(bReceive, bReceive.Length, 0);
                  
                    //Convert Byte to String
                     sBuffer = Encoding.ASCII.GetString(bReceive, 0, bReceive.Length);
                     main.getInstance()._WriteLog(sBuffer);
                    }
                    catch (Exception e)
                    {
                        main.getInstance()._WriteLog("httpserver: An Exception  :" + e.ToString());
                    }
                    try
                    {
                        //Not just a socket opened
                        if (sBuffer.Length > 5)
                        {
                            if (main.getInstance().TestmodusValue )
                            {
                                main.getInstance()._WriteLog("httpserver: Init not finished");
                                string sHttpVersion = sBuffer.Substring(iStartPos, 8);
                                string Message = "<html><body><center><meta http-equiv=\"refresh\" content=\"5; URL=index.html?time="+DateTime.Now.ToString()+"\"><font face=Arial>Init not finished.<br>Loading Login screen after finishing.</font></center></body></html>";

                                SendToBrowser(Message, ref mySocket);
                                mySocket.Close();
                            }
                            else if ((!sBuffer.Contains("BC84SIM") && !sBuffer.Contains("WebApp") && (sBuffer.Contains("iPod") || sBuffer.Contains("iPhone") )) )
                            {
                                main.getInstance()._WriteLog("httpserver: Iphonemodus");
                                string sHttpVersion = sBuffer.Substring(iStartPos, 8);
                                string Message = "<html><body><center><meta http-equiv=\"refresh\" content=\"0; URL=/WebApp/index.html?time=" + DateTime.Now.ToString() + "\"><font face=Arial>Loading Iphone GUI....</font></center></body></html>";

                                SendToBrowser(Message, ref mySocket);
                                mySocket.Close();
                            }
                            else
                            {
                                // Look for HTTP request
                                iStartPos = sBuffer.IndexOf("HTTP", 1);
                                string sHttpVersion = sBuffer.Substring(iStartPos, 8);
                                sRequest = sBuffer.Substring(0, iStartPos - 1);
                                if (sBuffer.StartsWith("GET /settings/brand/"))
                                {
                                    main.getInstance()._WriteLog("httpserver: Settings Brand");
                                    string Message = Settings.BrandSB;
                                   // Message = MyLoginHandler.getInstance().checklogin(sBuffer, mySocket.RemoteEndPoint.ToString().Split(':')[0]);
                                    SendHeader(sHttpVersion, "text/xml", Message.Length, " 200 OK", ref mySocket);
                                    SendToBrowser(Message, ref mySocket);
                                    mySocket.Close();
                                }
                                //Login
                                else if (sBuffer.StartsWith("GET /login/"))
                                {
                                    main.getInstance()._WriteLog("httpserver: Loginmodus");
                                    string Message="";
                                    Message = MyLoginHandler.getInstance().checklogin(sBuffer, mySocket.RemoteEndPoint.ToString().Split(':')[0]);
                                    SendHeader(sHttpVersion, "text/xml", Message.Length, " 200 OK", ref mySocket);
                                    SendToBrowser(Message, ref mySocket);
                                    mySocket.Close();     
                                }else
                                if (sBuffer.StartsWith("GET /logout/"))
                                {
                                    main.getInstance()._WriteLog("httpserver: Logoutmodus");
                                    string Message = "Error: Ausgeloggt";
                                    MyLoginHandler.getInstance().logout(sBuffer, mySocket.RemoteEndPoint.ToString().Split(':')[0]);
                                    SendHeader(sHttpVersion, "text/xml", Message.Length, " 200 OK", ref mySocket);

                                    SendToBrowser(Message, ref mySocket);
                                    mySocket.Close();
                                }

                                //At present we will only deal with GET type
                                else if (sBuffer.Substring(0, 20).Contains("/request/") 
                                    || sBuffer.Substring(0, 20).Contains("/BC84SIM/") || sBuffer.Substring(0, 20).Contains("/ipadresse/"))
                                {
                                    main.getInstance()._WriteLog("httpserver: Requestmodus");
                                    if (MyLoginHandler.getInstance().loggedin(sBuffer, mySocket.RemoteEndPoint.ToString().Split(':')[0]))
                                    {
                                        string Message;
                                        try
                                        {
                                            lock (lockobject)
                                            {
                                                Message = MyEventHandler.getInstance().UseGeneral(sRequest);
                                            }
                                            if (sBuffer.Substring(0, 20).Contains("BC84"))
                                            {
                                                main.getInstance()._WriteLog("html");
                                                SendHeader(sHttpVersion, "", Message.Length, " 200 OK", ref mySocket);
                                            }
                                            else
                                            {

                                                main.getInstance()._WriteLog("xml");
                                                SendHeader(sHttpVersion, "text/xml", Message.Length, " 200 OK", ref mySocket);
                                            }
                                            SendToBrowser(Message, ref mySocket);
                                            mySocket.Close();
                                        }
                                        catch (Exception e)
                                        {
                                            main.getInstance()._WriteLog("httpserver: Error: Could not send dynamic data:" + e.ToString());
                                        }
                                    }
                                    else
                                    {

                                        string Message = "<channel><error>Error: Timeout of User Login</error></channel>";
                                        SendHeader(sHttpVersion, "text/xml", Message.Length, " 200 OK", ref mySocket);
                                        SendToBrowser(Message, ref mySocket);
                                        mySocket.Close();    
                                    }
                                }
                                else
                                {
                                    main.getInstance()._WriteLog("httpserver: Filemodus");
                                    //Replace backslash with Forward Slash, if Any
                                    sRequest.Replace("\\", "/");
                                    //If file name is not supplied add forward slash to indicate 
                                    //that it is a directory and then we will look for the 
                                    //default file name..
                                    if ((sRequest.IndexOf(".") < 1) && (!sRequest.EndsWith("/")))
                                    {
                                        sRequest = sRequest + "/";
                                    }
                                    //Extract the requested file name
                                    iStartPos = sRequest.LastIndexOf("/") + 1;
                                    sRequestedFile = sRequest.Substring(iStartPos);
                                    //?time argument erlauben
                                    sRequestedFile=sRequestedFile.Split('?')[0];
                                    //Extract The directory Name
                                    sDirName = sRequest.Substring(sRequest.IndexOf("/"), sRequest.LastIndexOf("/") - 3);
                                    /////////////////////////////////////////////////////////////////////
                                    // Identify the Physical Directory
                                    /////////////////////////////////////////////////////////////////////
                                    if (sDirName == "/")
                                        sLocalDir = sMyWebServerRoot;
                                    else
                                        sLocalDir = GetLocalPath(sMyWebServerRoot, sDirName);

                                    main.getInstance()._WriteLog("httpserver: Directory Requested : " + sLocalDir);

                                    //If the physical directory does not exists then
                                    // dispaly the error message
                                    if (sLocalDir.Length == 0)
                                    {
                                        sErrorMessage = "<H2>Error!! Requested Directory does not exists</H2><Br>";

                                        //sErrorMessage = sErrorMessage + "Please check data\\Vdirs.Dat";
                                        try
                                        {
                                            //Format The Message
                                            SendHeader(sHttpVersion, "", sErrorMessage.Length, " 404 Not Found", ref mySocket);
                                            //Send to the browser
                                            SendToBrowser(sErrorMessage, ref mySocket);
                                        }
                                        catch (Exception e)
                                        {
                                            main.getInstance()._WriteLog("httpserver: An Exception in sending 404 " + e.ToString());
                                        }

                                        mySocket.Close();
                                        continue;
                                    }


                                    /////////////////////////////////////////////////////////////////////
                                    // Identify the File Name
                                    /////////////////////////////////////////////////////////////////////

                                    //If The file name is not supplied then look in the default file list
                                    if (sRequestedFile.Length == 0)
                                    {
                                        // Get the default filename
                                        sRequestedFile = GetTheDefaultFileName(sLocalDir);

                                        if (sRequestedFile == "")
                                        {
                                            sErrorMessage = "<H2>Error!! No Default File Name Specified</H2>";
                                            SendHeader(sHttpVersion, "", sErrorMessage.Length, " 404 Not Found", ref mySocket);
                                            SendToBrowser(sErrorMessage, ref mySocket);

                                            mySocket.Close();

                                            return;

                                        }
                                    }




                                    /////////////////////////////////////////////////////////////////////
                                    // Get TheMime Type
                                    /////////////////////////////////////////////////////////////////////

                                    String sMimeType = GetMimeType(sRequestedFile);

                                    //Build the physical path
                                    sPhysicalFilePath = sLocalDir + sRequestedFile;
                                    main.getInstance()._WriteLog("httpserver: File Requested : " + sPhysicalFilePath);
                                    //Request of file allowed
                                    bool allowrequest = true;
                                    if (sRequestedFile.Contains("ndex.html"))
                                    {
                                        if (MyLoginHandler.getInstance().loggedin(sBuffer, mySocket.RemoteEndPoint.ToString().Split(':')[0]))
                                        {
                                            main.getInstance()._WriteLog("httpserver: Bereits eingeloggt -Weiterleitung");
                                            
                                           // string sHttpVersion = sBuffer.Substring(iStartPos, 8);
                                            string Message = "<html><body><center><meta http-equiv=\"refresh\" content=\"1; URL=index4.html?time=" + DateTime.Now.ToString() + "\"><font face=Arial>Loading...</font></center></body></html>";

                                            SendToBrowser(Message, ref mySocket);
                                            mySocket.Close();
                                        }

                                    }else
                                    if (!sRequestedFile.Contains("ndex.html") &&sRequestedFile.Contains(".html") )
                                    {
                                        if(!MyLoginHandler.getInstance().loggedin(sBuffer, mySocket.RemoteEndPoint.ToString().Split(':')[0]))
                                        allowrequest = false;
                                        
                                    }
                                    if (allowrequest == false && !sRequestedFile.Contains("ndex.html"))
                                    {
                                        main.getInstance()._WriteLog("httpserver: Noch nicht eingeloggt -Weiterleitung");
                                     
                                        //string sHttpVersion = sBuffer.Substring(iStartPos, 8);
                                        string Message = "<html><body><center><meta http-equiv=\"refresh\" content=\"1; URL=index.html?time=" + DateTime.Now.ToString() + "\"><font face=Arial>Loading...</font></center></body></html>";

                                        SendToBrowser(Message, ref mySocket);
                                        mySocket.Close();
                                    }
                                    else if (File.Exists(sPhysicalFilePath) == false)
                                    {

                                        sErrorMessage = "<H2>404 Error! File Does Not Exists...</H2>";
                                        SendHeader(sHttpVersion, "", sErrorMessage.Length, " 404 Not Found", ref mySocket);
                                        SendToBrowser(sErrorMessage, ref mySocket);

                                        Console.WriteLine(sFormattedMessage);
                                    }

                                    else 
                                    {
                                        int iTotBytes = 0;
                                        sResponse = "";
                                       FileStream fs = new FileStream(sPhysicalFilePath, FileMode.Open, FileAccess.Read, FileShare.Read);
                                       byte[] bytes = ReadFully(fs, 0);
                                        iTotBytes = bytes.Length;
                                        fs.Close();
                                        SendHeader(sHttpVersion, sMimeType, iTotBytes, " 200 OK", ref mySocket);
                                   
                                        SendToBrowser(bytes, ref mySocket);

                                        //mySocket.Send(bytes, bytes.Length,0);

                                    }
                                    mySocket.Close();
                                }
                            }
                        }
                        else
                            mySocket.Close();
                    }
                    catch (Exception e)
                    {
                        main.getInstance()._WriteLog("httpserver: An Exception Occurred while Listening :" + e.ToString());
                    }
                }
            }
        }
    }
}

Das closeports wird extern von der main.cs aufgerufen.

Thema: Forcieren Socket Close
Am im Forum: Netzwerktechnologien

Nja, das funktioniert ja alles. Nur beim Beenden und neuerlichen Starten geht manchmal der Socket nicht mehr auf .

Thema: Forcieren Socket Close
Am im Forum: Netzwerktechnologien

Hallo,
wie kann man das schliessen eines Ports beim beenden einer C# Applikation forcieren,erzwingen?
Aktuell beim beendne meines Programms rufe ich auf:

 myListener.Server.Close();
 myListener.Stop();

Wobei ab und an der Port danach beim abermaligen starten des Programms nicht geöffnet werden kann,...

Wichtig hierbei:Der Server startet immer beim Zugriff einen neuen Thread....
im Thread schaut dass dann so aus:


            while (run)
            {
                //Accept a new connection
                myListener.Start();
                Socket mySocket;
                try
                {
                    mySocket = myListener.AcceptSocket();
                }

Thema: Passende Collection, um inaktive User zu ermitteln
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

ok. cool, danke

Thema: Passende Collection, um inaktive User zu ermitteln
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo,
ich habe einen Socket Server.
Nun koennen sich dort User einloggen.Nach einer gewissen inaktivität sollen sie rausfliegen,...

wuerdet ihr das auch mittels einer ArrayList machen? Welche eine Struct enthaelt und in dieser ist Username,IP,Timeout

und diese Liste laufend iterieren, und wenn man durchlaeuft und die aktuelle Zeit >Timeout dann rausloeschen. Wenn der nutzer was macht, dann die Timeout updaten,..

Thema: Methode gegen gleichzeitige Ausführung durch mehrere Threads schützen
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

aso du meinst,dass ein thread dann laufend abfragt ob er darf?

Thema: Methode gegen gleichzeitige Ausführung durch mehrere Threads schützen
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Das mit dem Flag mache ich gerade.

Aber bei 3 Clients oder so, hilft das nciht mehr,...da die Reihung nicht mehr gegeben ist.

Ein Beispiel mit Zeiten
10:03 Client 1 sendet Anfrage
10:04 Anfrage Client1 wird an Hardware gesendet
10:05 Client 1 erhaelt Antworten Beginn von Hardware
10:06 Client 2 sendet Anfrage
10:07 Client 1 erhaelt Antworten Ende von Hardware
10:08 Client 3 sendet Anfrage
10:09 Anfrage Client2 wird an Hardware gesendet
10:10 Client 2 erhaelt Antworten Beginn von Hardware
10:11 Client 2 erhaelt Antworten Ende von Hardware
10:12 Anfrage Client3 wird an Hardware gesendet
10:13 Client 1 erhaelt Antworten Beginn von Hardware
10:14 Client 1 erhaelt Antworten Ende von Hardware


Die hardware ist in einem Singleton dass von beiden Threads auch aufgerufen wird, dort ist eben die Methode zum nachrichten erhalten

Thema: Methode gegen gleichzeitige Ausführung durch mehrere Threads schützen
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

nja, aber die hardware laeuft ja in keinem thread,...

Thema: Methode gegen gleichzeitige Ausführung durch mehrere Threads schützen
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo,
folgendes Problem.
Ich habe mehrere Threads (Socketserver).

Nun sendet ein Client eine Anfrage und soll Daten von einer Hardwar abfragen. Die Hardware wurde in einer Klasse welche ein Singleton enthaelt initialisiert und der Thread ruft dann das SIngleton auf:

Hardware.getInstance().getmessage(string nachricht);

Nun wartet die getmessage bis daten ankommen, und sendet diese dann zurueck.

Wie kann ich sicherstellen, dass getmessage nciht parallel ein zweites mal aufgerufen wird, sodass unter umstaenden ein Socketclient die Falschen Daten erhaelt?


lg

Andreas

Thema: Regular Expressions: Auf Teil eines Pattern zugreifen
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo,

leider schmeisst er mich hier:


receivedData="RC#TEST#-#EVENTSB#12#asd#asd#asdf";
  r = new Regex("(RC#TEST#).*?(#EVENTSB#).*?(#).*?", RegexOptions.IgnoreCase | RegexOptions.Singleline);
  MatchCollection m2 = r.Matches(receivedData);
  if (m2.Count>0)
  {   
  this._WriteLog("Daemon im SB:"+m2[1].Value.ToString());
   }


Er kann nicht auf das Element 1 zugreifen das sollte 12 sein.

Thema: Was für eine Collection für Zuordnung von Telefonnummer zu Name?
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

danke

Thema: Was für eine Collection für Zuordnung von Telefonnummer zu Name?
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo,
ich habe ein Programm , das soll telefnnummern und Staedte aus dem Internet laden.


Suche ich z.b. nach Maier so erhalte ich einen String den ich in einer Liste etc. speichern moechte.
d.h. wenn ich beim naechsten Mal suche, wird geschaut ob Maier bereits in der Liste existiert , wird dieser verwendet, ansonsten wird der Inhalt neu aus der Datenbank gelesen.

Jetzt haette ich gerne sowas wie:
Array[Maier]

Wie programmiere ich das? Nutze ich Arraylist, oder Array?

Thema: File or assembly name 'System.Windows.Forms Error windows Ce
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Hallo,
ich habe ein Windows CE Device, darauf soll eine App laufen. Leider wenn ich die Dateien auf das Geraet kopiere und dann ausfuehren moechte, erhalte ich diese Fehler:

1.File or assembly name 'System.Windows.Forms Version 2.0.0.0, Culture=neutral,PublicKeyToken=B77A5C561..., or one of it's depencies was not found'

und dann dieser Fehler
2.
The application failed to load required components...

Der Fehler sagt für mich quasi nichts aus.
Zudem laufen andere von mir kompilierte Apps
Ich würde mich freuen wenn ihr mir helfen koenntet.

Best regards,

Andreas

Thema: CF Application unter Windows debuggen
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Hallo,
ich habe mit c# eine compact framework applikation egschrieben,
Startet man selbige, so startet der Windows Mobile Emulator beim debuggen.

Kann man dies auch so startet dass die compact framework applikation direkt in windows startet.

Das Programm stuerzt mir leider ab, und ich wuerde gerne sehen wo dies auftritt.
Aus diesem Grunde wuerde ich das Programm gerne von Visual Studio aus starten. Die GUI ist mir fuer die Windows Mobile devices die angeboten werden zu groß , ich kann sie nicht sehen. Deswegen am besten einfach unter windows starten.

Eine Idee?

Thema: Einfache Dokumente per C# erstellen (HTML, DOC, PDF)
Am im Forum: Rund um die Programmierung

Hallo herbivore,
ja das ist mir bewusst, dass das einfach geht eine HTML zu erstellen. Deswegen eben die Idee mit diesem Ansatz. Leider habe ich noch keine Konverterklasse gefunden.
itextsharp kann mir zuwenig

lg

Thema: Einfache Dokumente per C# erstellen (HTML, DOC, PDF)
Am im Forum: Rund um die Programmierung

Vielleicht koennte man ja HTML in ein Doc und ein PDF umwandeln mit irgendeiner funktion.
Zb Microsoft Office ansteuern,...

Thema: Einfache Dokumente per C# erstellen (HTML, DOC, PDF)
Am im Forum: Rund um die Programmierung

Nein die soll automatisch erstellt werden as Messdaten die ich mittels C# bereits empfange

Thema: Einfache Dokumente per C# erstellen (HTML, DOC, PDF)
Am im Forum: Rund um die Programmierung

Hallo,
fuer eine Messreihe wuerde ich gerne eine einfache Dokumentation erstellen, am besten zur Auswahl HTML / RTF / PDF

Inhalt lediglich ein paar saetze, 1 bild und 1 tabelle

Womit schreibt man das am besten?

lg

Thema: PicoCOM1 Embedded System
Am im Forum: .NET-Komponenten und C#-Snippets

Seite:

http://www.ploetzeneder.eu/softwareentwicklung/mikrocontroller/picocom1.html

Beschreibung:

In den letzten Tagen habe ich mich mit einem Embedded System von FS-NET beschaftigt. Ich moechte euch hier ein deutschsprachiges Tutorial zum erstmaligen Betrieb des Mikrocontrollers zeigen. Es ist ein sehr einfach zu steuernder Mikrocontroller mit compact Framework Unterstuetzung.

Leider habe ich mich ein wenig schwer getan, ihn mithilfe des Tutorials der Firma FS-NET zum laufen zu bekommen, weswegen ich mich entschieden habe auch ein Tutorial zu schreiben in dem aus meiner Sicht irrelevante Teile weggelassen wurden.

Ich wuerde mich ueber euer Feedback freuen.

Best regards,

Plötzeneder

Thema: Methoden von DLL werden nicht erkannt
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Ja, richtig, so kenne ich das auch, aber gibts einen Trick, dass man die Namespaces auslesen kann. Ein Tool etc. Also ich will die Namespaces aus der DLL Auslesen

Thema: Methoden von DLL werden nicht erkannt
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo,
ich hab da eine DLL, deren Methoden nicht erkannt werden.
Ich hab sie via Resource und Referenz eingefuegt. Nun moechte ich gerne in einer C# Datei die Methoden und Objecte von einer Klasse dort anlegen.

Wie gehe ich hier am besten vor?

Die Suche half mir leider nicht weiter

lg

Thema: Alle String-Literale aus einer C#-Quellcodedatei auslesen
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Habs jetzt mit
http://www.txt2re.com/ gemacht



        public string containsstring(String strToCheck)
        {
            string re1 = ".*?";	// Non-greedy match on filler
            string re2 = "(\".*?\")";	// Double Quote String 1
            Regex r = new Regex(re1 + re2, RegexOptions.IgnoreCase | RegexOptions.Singleline);
            Match m = r.Match(strToCheck);
            return m.Groups[1].ToString();
        }