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 ?