tcp stream senden

theplake

Erfahrenes Mitglied
Hi Leute

Ich hab mir nen kleinen tcp server gebastelt der bestimmte tcp pakete an einen Client senden soll.

Der Client sendet normalerweise an einen anderen Server habe daher die tcp pakete mit wireshark abgefangen und möchte nun diese ascii pakete an meinen Server schicken und beantworten.

Die Antwort pakete habe ich auch.

Ich habe es soweit geschafft das der Client mein Server anfragt und wenn ich ihm dann die Antwort sende sagt er mir TCP ACKED LOST SEGMENT.

Nun meine Frage, ist es überhaupt möglich einfach so quasi kopierte antwort strings zu senden?
 
Ganz allgemein gesagt: Ja es ist (zumindest theoretisch) möglich kopierte Antwortstrings zu senden. Probleme kriegst du aber wenn die Verbindung in irgendeiner Form verschlüsselt abläuft, oder der Client überprüft ob die AntwortIP auch die SendeIP ist.

Wer sagt den "TCP ACKED LOST SEGMENT"? Der Client oder der Server. Wenns der Client ist, dann bräuchten wir detailierte Informationen darüber was du eigentlich vorhast.
 
TCP ACKED LOST SEGMENT sagt wireshark wenn die antwort zum client rüber geht.

habe die jetzt mal von meiner netzwerkkarte das checksum offload deaktiviert jetzt kommt keine Fehlermeldung mehr.Aber er bleibt immernoch in der Schleife hängen. Hier der Code vom Server:
Code:
 private void ListenForClients()
        {
            this.tcpListener.Start();

            while (true)
            {
                TcpClient client = this.tcpListener.AcceptTcpClient();

                Thread clientThread = new Thread(new ParameterizedThreadStart(HandleClientComm));
                clientThread.Start(client);
              
            }
        }
        private void HandleClientComm(object client)
        {
            

            TcpClient tcpClient = (TcpClient)client;
            NetworkStream clientStream = tcpClient.GetStream();
            StreamWriter mystream = new StreamWriter("data.txt");
            
            int bytesRead;
            string str = HexString2Ascii("4433010000000000400000000100000076a434e1a3a1fb5417da2051188eb481c09c7c01ae99051ff0ab264394e641582ce07e42dad7897ed16b3cde44aec605939b7f9d26d526d7d16b3cde44aec605");
 



            byte[] message = new byte[10000];
                while (true)
                {
                    bytesRead = 0;
                  
                   
                     try
                     {
                         
                        
                         bytesRead = clientStream.Read(message, 0, 10000);<-----Hier hängt er beim 2. durchlauf

                     }
                     catch (Exception ex)
                     {
                         MessageBox.Show(ex.Message);
                     }
                    ASCIIEncoding encoder = new ASCIIEncoding();
                   textBox1.AppendText(encoder.GetString(message, 0, bytesRead));
                   
                  
                  byte[] buffer = Encoding.GetEncoding(1252).GetBytes(str);
                   clientStream.Write(buffer, 0, buffer.Length);
                        clientStream.Flush();

                       
                      
                } 
          
          
           
        }


        private static string HexString2Ascii(string hexString)
        {
        byte[] tmp;
        int j = 0;
        tmp = new byte[(hexString.Length)/2];
        for (int i = 0; i <= hexString.Length - 2; i += 2)
        {
        tmp[j] =(byte)Convert.ToChar(Int32.Parse(hexString.Substring(i, 2), System.Globalization.NumberStyles.HexNumber));

        j++;
        }
        Encoding enc = Encoding.GetEncoding(1252);
       // return Encoding.ASCII.GetString(tmp);
        string result = enc.GetString(tmp);
        return result;
        }


        private void button1_Click(object sender, EventArgs e)
        {
            this.tcpListener = new TcpListener(IPAddress.Any, 11111);
            this.listenThread = new Thread(new ThreadStart(ListenForClients));
            this.listenThread.Start();
            

           
        }
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück