Laden...

Probleme beim Übertragen von mehreren Byte[]-Arrays

Erstellt von danisahne123 vor 10 Jahren Letzter Beitrag vor 10 Jahren 1.426 Views
D
danisahne123 Themenstarter:in
1 Beiträge seit 2014
vor 10 Jahren
Probleme beim Übertragen von mehreren Byte[]-Arrays

Servus alle miteinander,
ich begrüße alle recht herzlich, ich würde gerne ein paar hex-Werte über TCP schicken.
Ich nehme eine Textbox, wandle die Zahlen daraus in ein Byte-Array und schicke diesen über TCP raus.
So alles in allem geht das auch.
Aber.
Wenn ich jetzt mehrere Textboxen habe dadurch auch mehrere Byte[]'s und ich diese schicke kommen die Werte auch an, aber leider versetzt zwischen jeden Wert werden LEER-Werte geschrieben. So das die nicht hintereinander geschickt werden sondern mit Lücken.
Nun meine Frage, ist das normal oder kann ich daran noch irgendetwas ändern?

Hier erstelle ich einen Socket.


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

Nun versuche ich diese Byte[] zu schicken, entweder getrennt, oder zusammengesetzt


                Byte[] senden = new Byte[29];
                senden[0] = 0xaa;
                senden[1] = 0x55;
                senden[2] = 0x01;
                senden[3] = Convert.ToByte(a1);
                senden[4] = Convert.ToByte(b1);
                senden[5] = Convert.ToByte(c1);
                senden[6] = Convert.ToByte(d1);
                senden[7] = Convert.ToByte(e1);
                senden[8] = Convert.ToByte(f1);
                senden[9] = Convert.ToByte(g1);
                senden[10] = Convert.ToByte(h1);
                senden[11] = Convert.ToByte(i1);
                senden[12] = Convert.ToByte(j1);
                senden[13] = Convert.ToByte(k1);
                senden[14] = Convert.ToByte(l1);
                senden[15] = Convert.ToByte(m1);
                senden[16] = Convert.ToByte(n1);
                senden[17] = Convert.ToByte(o1);
                senden[18] = Convert.ToByte(p1);
                senden[19] = Convert.ToByte(q1);
                senden[20] = Convert.ToByte(r1);
                senden[21] = Convert.ToByte(s1);
                senden[22] = Convert.ToByte(t1);
                senden[23] = Convert.ToByte(u1);
                senden[24] = Convert.ToByte(v1);
                senden[25] = Convert.ToByte(w1);
                senden[26] = Convert.ToByte(x1);
                senden[27] = Convert.ToByte(y1);
                senden[28] = Convert.ToByte(z1);

                m_socClient.Send(senden, 0, senden.Length, SocketFlags.None);

                byte[] send = new byte[data_send.Length + a1.Length + b1.Length + c1.Length + d1.Length + e1.Length + f1.Length + g1.Length + h1.Length
                                     + g1.Length + i1.Length + j1.Length + k1.Length + l1.Length + m1.Length + n1.Length + o1.Length + p1.Length + q1.Length
                                     + r1.Length + s1.Length + t1.Length + u1.Length + v1.Length + w1.Length + x1.Length + y1.Length + z1.Length];
                System.Buffer.BlockCopy(data_send, 0, send, 0, data_send.Length);
                System.Buffer.BlockCopy(a1, 0, send, data_send.Length, a1.Length);
                System.Buffer.BlockCopy(b1, 0, send, data_send.Length + a1.Length, b1.Length);
                System.Buffer.BlockCopy(c1, 0, send, data_send.Length + a1.Length + b1.Length, c1.Length);
                System.Buffer.BlockCopy(d1, 0, send, data_send.Length + a1.Length + b1.Length + c1.Length, d1.Length);
                System.Buffer.BlockCopy(e1, 0, send, data_send.Length + a1.Length + b1.Length + c1.Length + d1.Length, e1.Length);
                System.Buffer.BlockCopy(f1, 0, send, data_send.Length + a1.Length + b1.Length + c1.Length + d1.Length + e1.Length, f1.Length);
                System.Buffer.BlockCopy(g1, 0, send, data_send.Length + a1.Length + b1.Length + c1.Length + d1.Length + e1.Length + f1.Length, g1.Length);
                System.Buffer.BlockCopy(h1, 0, send, data_send.Length + a1.Length + b1.Length + c1.Length + d1.Length + e1.Length + f1.Length + g1.Length, h1.Length);
                System.Buffer.BlockCopy(i1, 0, send, data_send.Length + a1.Length + b1.Length + c1.Length + d1.Length + e1.Length + f1.Length + g1.Length + h1.Length, i1.Length);
                System.Buffer.BlockCopy(j1, 0, send, data_send.Length + a1.Length + b1.Length + c1.Length + d1.Length + e1.Length + f1.Length + g1.Length + h1.Length + i1.Length, j1.Length);
                System.Buffer.BlockCopy(k1, 0, send, data_send.Length + a1.Length + b1.Length + c1.Length + d1.Length + e1.Length + f1.Length + g1.Length + h1.Length + i1.Length + j1.Length, k1.Length);
                System.Buffer.BlockCopy(l1, 0, send, data_send.Length + a1.Length + b1.Length + c1.Length + d1.Length + e1.Length + f1.Length + g1.Length + h1.Length + i1.Length + j1.Length + k1.Length, l1.Length);
                System.Buffer.BlockCopy(m1, 0, send, data_send.Length + a1.Length + b1.Length + c1.Length + d1.Length + e1.Length + f1.Length + g1.Length + h1.Length + i1.Length + j1.Length + k1.Length + l1.Length, m1.Length);
                System.Buffer.BlockCopy(n1, 0, send, data_send.Length + a1.Length + b1.Length + c1.Length + d1.Length + e1.Length + f1.Length + g1.Length + h1.Length + i1.Length + j1.Length + k1.Length + l1.Length + m1.Length, n1.Length);
                System.Buffer.BlockCopy(o1, 0, send, data_send.Length + a1.Length + b1.Length + c1.Length + d1.Length + e1.Length + f1.Length + g1.Length + h1.Length + i1.Length + j1.Length + k1.Length + l1.Length + m1.Length + n1.Length, o1.Length);
                System.Buffer.BlockCopy(p1, 0, send, data_send.Length + a1.Length + b1.Length + c1.Length + d1.Length + e1.Length + f1.Length + g1.Length + h1.Length + i1.Length + j1.Length + k1.Length + l1.Length + m1.Length + n1.Length + o1.Length, p1.Length);
                System.Buffer.BlockCopy(q1, 0, send, data_send.Length + a1.Length + b1.Length + c1.Length + d1.Length + e1.Length + f1.Length + g1.Length + h1.Length + i1.Length + j1.Length + k1.Length + l1.Length + m1.Length + n1.Length + o1.Length + p1.Length, q1.Length);
                System.Buffer.BlockCopy(r1, 0, send, data_send.Length + a1.Length + b1.Length + c1.Length + d1.Length + e1.Length + f1.Length + g1.Length + h1.Length + i1.Length + j1.Length + k1.Length + l1.Length + m1.Length + n1.Length + o1.Length + p1.Length + q1.Length, r1.Length);
                System.Buffer.BlockCopy(s1, 0, send, data_send.Length + a1.Length + b1.Length + c1.Length + d1.Length + e1.Length + f1.Length + g1.Length + h1.Length + i1.Length + j1.Length + k1.Length + l1.Length + m1.Length + n1.Length + o1.Length + p1.Length + q1.Length + r1.Length, s1.Length);
                System.Buffer.BlockCopy(t1, 0, send, data_send.Length + a1.Length + b1.Length + c1.Length + d1.Length + e1.Length + f1.Length + g1.Length + h1.Length + i1.Length + j1.Length + k1.Length + l1.Length + m1.Length + n1.Length + o1.Length + p1.Length + q1.Length + r1.Length + s1.Length, t1.Length);
                System.Buffer.BlockCopy(u1, 0, send, data_send.Length + a1.Length + b1.Length + c1.Length + d1.Length + e1.Length + f1.Length + g1.Length + h1.Length + i1.Length + j1.Length + k1.Length + l1.Length + m1.Length + n1.Length + o1.Length + p1.Length + q1.Length + r1.Length + s1.Length + t1.Length, u1.Length);
                System.Buffer.BlockCopy(v1, 0, send, data_send.Length + a1.Length + b1.Length + c1.Length + d1.Length + e1.Length + f1.Length + g1.Length + h1.Length + i1.Length + j1.Length + k1.Length + l1.Length + m1.Length + n1.Length + o1.Length + p1.Length + q1.Length + r1.Length + s1.Length + t1.Length + u1.Length, v1.Length);
                System.Buffer.BlockCopy(w1, 0, send, data_send.Length + a1.Length + b1.Length + c1.Length + d1.Length + e1.Length + f1.Length + g1.Length + h1.Length + i1.Length + j1.Length + k1.Length + l1.Length + m1.Length + n1.Length + o1.Length + p1.Length + q1.Length + r1.Length + s1.Length + t1.Length + u1.Length + v1.Length, w1.Length);
                System.Buffer.BlockCopy(x1, 0, send, data_send.Length + a1.Length + b1.Length + c1.Length + d1.Length + e1.Length + f1.Length + g1.Length + h1.Length + i1.Length + j1.Length + k1.Length + l1.Length + m1.Length + n1.Length + o1.Length + p1.Length + q1.Length + r1.Length + s1.Length + t1.Length + u1.Length + v1.Length + w1.Length, x1.Length);
                System.Buffer.BlockCopy(y1, 0, send, data_send.Length + a1.Length + b1.Length + c1.Length + d1.Length + e1.Length + f1.Length + g1.Length + h1.Length + i1.Length + j1.Length + k1.Length + l1.Length + m1.Length + n1.Length + o1.Length + p1.Length + q1.Length + r1.Length + s1.Length + t1.Length + u1.Length + v1.Length + w1.Length + x1.Length, y1.Length);
                System.Buffer.BlockCopy(z1, 0, send, data_send.Length + a1.Length + b1.Length + c1.Length + d1.Length + e1.Length + f1.Length + g1.Length + h1.Length + i1.Length + j1.Length + k1.Length + l1.Length + m1.Length + n1.Length + o1.Length + p1.Length + q1.Length + r1.Length + s1.Length + t1.Length + u1.Length + v1.Length + w1.Length + x1.Length + y1.Length, z1.Length);
                m_socClient.Send(send, 0, send.Length, SocketFlags.None);

                m_socClient.Send(data_send, 0, data_send.Length, SocketFlags.None);
                m_socClient.Send(a1, 0, a1.Length, SocketFlags.None);
                m_socClient.Send(b1, 0, b1.Length, SocketFlags.None);
                m_socClient.Send(c1, 0, c1.Length, SocketFlags.None);
                m_socClient.Send(d1, 0, d1.Length, SocketFlags.None);
                m_socClient.Send(e1, 0, e1.Length, SocketFlags.None);
                m_socClient.Send(f1, 0, f1.Length, SocketFlags.None);
                m_socClient.Send(g1, 0, g1.Length, SocketFlags.None);
                m_socClient.Send(h1, 0, h1.Length, SocketFlags.None);
                m_socClient.Send(i1, 0, i1.Length, SocketFlags.None);
                m_socClient.Send(j1, 0, j1.Length, SocketFlags.None);
                m_socClient.Send(k1, 0, k1.Length, SocketFlags.None);
                m_socClient.Send(l1, 0, l1.Length, SocketFlags.None);
                m_socClient.Send(m1, 0, m1.Length, SocketFlags.None);
                m_socClient.Send(n1, 0, n1.Length, SocketFlags.None);
                m_socClient.Send(o1, 0, o1.Length, SocketFlags.None);
                m_socClient.Send(p1, 0, p1.Length, SocketFlags.None);
                m_socClient.Send(q1, 0, q1.Length, SocketFlags.None);
                m_socClient.Send(r1, 0, r1.Length, SocketFlags.None);
                m_socClient.Send(s1, 0, s1.Length, SocketFlags.None);
                m_socClient.Send(t1, 0, t1.Length, SocketFlags.None);
                m_socClient.Send(u1, 0, u1.Length, SocketFlags.None);
                m_socClient.Send(v1, 0, v1.Length, SocketFlags.None);
                m_socClient.Send(w1, 0, w1.Length, SocketFlags.None);
                m_socClient.Send(x1, 0, x1.Length, SocketFlags.None);
                m_socClient.Send(y1, 0, y1.Length, SocketFlags.None);
                m_socClient.Send(z1, 0, z1.Length, SocketFlags.None);

Aber leider funktioniert nicht so wie ich das möchte.
Damit ihr ein Vorstellung bekommt was ich meine:
Der Soll-Zustand ist FFC0FFC0FFC0FFC0FFC0
der Ist-Zustand ist FFC0000FFC00000FFC00000FFC0
und das macht mir kirre.
Ich hoffe ihr könnt mir helfen dieses Problem zu lösen.

Schonmal vorab herzlichen Dank
Viele Grüße
Daniel Girndt

4.942 Beiträge seit 2008
vor 10 Jahren

Hallo und willkommen,

sorry, das gleich zu schreiben, aber schmeiß den Code weg und fange nochmal mit den Grundlagen (Arrays und Datentypen) an.
Und dann fange klein an, d.h. erst einen Text schicken, dann 2 usw.

R
212 Beiträge seit 2012
vor 10 Jahren

Stehen denn vor dem versenden die richtigen werte drinn?? *in den byte arrays

[Edit:
Grundlagen sind immer gut, bevor man damit anfängt etwas komplizierteres zu programmieren;

Tipp:
Zum Grundlagen lernen bitet sich das GalileoOpenboock( Visual C# 2012 - Das umfassende Handbuch ) an.

D
30 Beiträge seit 2013
vor 10 Jahren

Hallo danisahne123,

wirkt so als ob du eine Text verschicken willst. Den Code den du momentan benutzt ist für viele Fehler anfällig ( durch vertippen und so ).

Also mein Vorschlag, um den Gedanken von Th69 zu präsisieren:
Mache aus den vielen kleinen Teilen einen großen string, zieh ein Encoding drüber und verschicke so den ganzen Text mit einmal.

Falls du ganze Objekte verschicken möchtest, schau mal hier rein http://msdn.microsoft.com/de-de/library/system.runtime.serialization.formatters.binary.binaryformatter(v=vs.110).aspx

Gruß
Der_Blob