Не отображаются данные переданные по сети - C#
Формулировка задачи:
подскажите в чем проблема
передаю данные по сети успешно без ошибок
принимаются вроде тоже
но вместо картинки получаю пустой файл или док-т, должен быть логотип а вместо этого белый экран
int df = strData.Length - 3; strData = strData.Substring(3, df); if (Writing == null) { Writing = File.OpenWrite(path1 + "" + nam); byte[] Buffer = new byte[65535]; string base64string = Convert.ToBase64String(Encoding.UTF8.GetBytes(strData)); Buffer = Convert.FromBase64String(base64string); Writing.Write(Buffer, 0, Buffer.Length); } else { int dfdfd = strData.Length; byte[] Buffer = new byte[65535];///// string base64string = Convert.ToBase64String(Encoding.UTF8.GetBytes(strData)); Buffer = Convert.FromBase64String(base64string); Writing.Write(Buffer, 0, Buffer.Length);/////// } if (strData.Length < 65535) Writing.Close();
При повторной попытке что то скачать вообще ничего не происходит как будто и не пыталась
Решение задачи: «Не отображаются данные переданные по сети»
textual
Листинг программы
private TcpListener Server; private TcpClient remoteClient; private TcpClient localClient; private Thread thClient; private Thread thServer; const string soob = "001"; const string info = "002"; const string fail = "003"; private void btnServer_Click(object sender, EventArgs e)//кнопка сервер { Server = new TcpListener(IPAddress.Any, 6785); Server.Start(); thServer = new Thread(() => { remoteClient = Server.AcceptTcpClient(); SendData(soob, GetLocDir()); byte[] buffer = new byte[2048]; while (remoteClient.Connected) { Array.Clear(buffer, 0, buffer.Length); remoteClient.GetStream().Read(buffer, 0, buffer.Length); string strData = Encoding.Default.GetString(buffer); int b = strData.IndexOf("\0"); b = b - 3; var messege = strData.Substring(0, 3); strData = strData.Substring(3, b); this.Invoke((Action)(() => { if (messege == soob) { try { string poddir = String.Join("/", Directory.GetDirectories(strData));/////подправить отображение string file = String.Join("/", Directory.GetFiles(strData));/////подправить отображение SendData(soob, poddir + "/" + file); } catch (Exception) { } } else if (messege == info) { FileInfo inf = new FileInfo(strData); SendData(info, inf.Name + "@" + Convert.ToString(inf.Length)); FileStream Stream = File.OpenRead(strData); byte[] Buffer = new byte[65535]; int BytesRead = -1; while (BytesRead != 0) { BytesRead = Stream.Read(Buffer, 0, 65535); SendData(fail, Convert.ToBase64String(Buffer)); } Stream.Close(); } })); } }); thServer.Start(); } FileStream Writing = null; string nam = ""; int size = 0; private void btnConnect_Click(object sender, EventArgs e)//кнопка клиент { localClient = new TcpClient(); localClient.Connect("127.0.0.1", 6785); thClient = new Thread(() => { byte[] buffer = new byte[65538]; while (localClient.Connected) { Array.Clear(buffer, 0, buffer.Length); localClient.GetStream().Read(buffer, 0, 65538); string strData = Encoding.Default.GetString(buffer); var messege = strData.Substring(0, 3); this.Invoke((Action)(() => { if (messege == soob) { int b = strData.IndexOf("\0"); b = b - 3; strData = strData.Substring(3, b); listView1.Clear(); string[] tx = strData.Split('/'); foreach (string s in tx) { listView1.Items.Add(s, 1); ls.Add(s); } } else if (messege == info) { int b = strData.IndexOf("\0"); b = b - 3; strData = strData.Substring(3, b); string[] tx = strData.Split('@'); nam = tx[0]; size = Convert.ToInt32(tx[1]+5); textBox1.Text = tx[0]; textBox2.Text = tx[1]; } else if (messege == fail) { int df = strData.Length - 3; strData = strData.Substring(3, df); if (Writing == null) { Writing = File.OpenWrite(Path.Combine(path1, nam)); } byte[] Buffer = Encoding.UTF8.GetBytes(strData); Writing.Write(Buffer, 0, Buffer.Length); if (strData.Length < 65535) Writing.Close(); } })); } }); thClient.Start(); SendData(soob, GetLocDir()); }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д