c# .Problemy z konwersią string to int.

0

Witam.
Mam za zadanie napisać program komunikujący się przez protokół Udp lub Tcp i przesyłający tablice int-ów.
Napisałem poniższy kod.

Klient - wysyła tablice .
W kliencie raczej nie widzę problemu działa poprawnie.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Net.Sockets;

namespace UDPKlient
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private string dane1()
    {
            int[] tab = new int[11] {1,1,0,9,9,9,9,9,9,9,0};
            string text="";
            for(int i =0 ;i<11; i++)
            {
            text =text + System.Convert.ToString(tab[i])+" ";
            }
            return text;
    }
        
        private void button1_Click(object sender, EventArgs e)
        {
            string host = "192.168.1.2";
            int port = 4444;
            try
            {
                UdpClient klient = new UdpClient(host,port);
                Byte[] dane = Encoding.ASCII.GetBytes(dane1());
                klient.Send(dane, dane.Length);
                
                klient.Close();
            }
            catch (Exception ex)
            {
                
                MessageBox.Show(ex.ToString(),"Bład");
            }


        }
    }
}

Serwer - pobiera tablice.
i tu mam pewien problem , serwer odbiera tablice w postaci [Byte]
i zęby przepisać dane z powrotem do tablicy muszę przekontrastować te dane do int-a.
Do tego celu napisałem taki kod.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net.Sockets;
using System.Net;

namespace test
{
    class Program
    {
        static void Main(string[] args)
        {
            string temp="";
            int liczba;
            int port = 4444;
            IPEndPoint zdalnyIP = new IPEndPoint(IPAddress.Any,0);
            try
            {
                UdpClient serwer = new UdpClient(port);
                Byte[] odczyt = serwer.Receive(ref zdalnyIP);
                string dane = Encoding.ASCII.GetString(odczyt);
                System.Console.WriteLine(dane);
                serwer.Close();

                for (int i = 0; i < 22; i++)
                {
                    if(i%2==0)
                    {
                    temp = System.Convert.ToString(dane[i]);
                    liczba = System.Convert.ToInt16(temp);
                    System.Console.WriteLine(liczba);
                    }
                }
                
            }

            catch
            {
                System.Console.WriteLine("Bład");


            }
            System.Console.ReadKey();

        }
    }
}

I tu jest problem bo mój kod serwera jest na tyle prymitywny, że radzi sobie z tablicą w postaci { 1,2,3,5,3,4..,9}
ale wykłada się na tablicy mieszanej z większymi parametrami int np {1,32,43,55,..,944}

Może ktoś potrafi mi wskazać błąd i podpowiedzieć jak rozwiązać ten problem.
Wiem ze problem jest w konwersji pomiędzy typami ale nie potrafię znaleźć funkcji która potrafiła by przekonwertować bezpośrednio z [Byte] do int , a konwertowanie przez stringa chyba nie jest najlepszym pomysłem ?

1

Całość to jakaś herezja, nie trzyma się kupy. NIE przesyłaj tego jako cały string.
Zapoznaj się z poniższymi pięknisiami

System.IO.MemoryStream
System.IO.BinaryWriter

Ah, ostatnia uwaga - w pełni obiektowym języku nie wypada pisać liniowo

0

Dzięki za podpowiedź , ale na razie te dwie biblioteki nie wiele mi mówią , poczytam o nich , dało by się podrzucić jakiś przykładowy kod albo chociaż fragment jak dokonać takiej konwersji ?

1 użytkowników online, w tym zalogowanych: 0, gości: 1