Witam. Mam problem z klasą Networkstream, a dokładniej z metodą Read i Write. Otóż mam taki kod:
client = new TcpClient();
client.Connect("127.0.0.1", 1234);
Byte[] recevl = Encoding.Unicode.GetBytes(textBox1.Text);
Byte[] recevp = Encoding.Unicode.GetBytes(textBox2.Text);
NetworkStream ns = client.GetStream();
ns.Write(recevl, 0, recevl.Length);
ns.Write(recevp, 0, recevp.Length);
ns.Close();
Jak widać są w nim komendy Write od razu nastepujące po sobie. Ale jak serwer ma je odebrac jako dwie różne tabele bajtów (czy jakoś tak):
IPEndPoint ipend = new IPEndPoint(ajpi, 1234);
TcpListener listener = new TcpListener(ipend);
listener.Start();
TcpClient client = listener.AcceptTcpClient();
NetworkStream stream = client.GetStream();
if (stream.DataAvailable)
{
byte[] fromClient = new byte[1024];
stream.Read(fromClient, 0, 1024);
log = Encoding.Unicode.GetString(fromClient);
}
client = listener.AcceptTcpClient();
stream = client.GetStream();
byte[] pasfrom = new byte[1024];
if (stream.DataAvailable)
{
stream.Read(pasfrom, 0, 1024);
password = Encoding.Unicode.GetString(pasfrom);
MessageBox.Show(password);
}
To do zmiennej "log" "pakuje" dwa wysłane pakiety połączone ze sobą. Np. jak wysyłam najpierw Test, a potem Test2 to serwer spakuje to do jednej zmiennej i to będzie wyglądać tak: "TestTest2". A ja chcę to w osobnych zmiennych :/.
client = new TcpClient();
client.Connect("127.0.0.1", 1234);
Byte[] recevl = Encoding.Unicode.GetBytes(textBox1.Text);
Byte[] recevp = Encoding.Unicode.GetBytes(textBox2.Text);
NetworkStream ns = client.GetStream();
ns.Write(recevl, 0, recevl.Length); //Tu byśmy wysłali "Test"
ns.Write(recevp, 0, recevp.Length); // A tu "Test2"
ns.Close();
Nie wiem co się za tym kryje :/. Bardzo bym prosił o pomoc ;).