Всем привет. Есть клиент-сервер приложение для передачи файлов по TCP. Тестил на локалхосте и по локалке - всё работает. Вчера пробовал по тестить через инет - не может почему-то прочитать поток.. Ниже приведен текст программы и сама ошибка
Клиент: | Код | TcpClient eclient = new TcpClient("localhost",34567); NetworkStream writerStream = eclient.GetStream(); BinaryFormatter format = new BinaryFormatter(); byte[] buf = new byte[1024 ]; int count; FileStream fs = new FileStream("111.txt", FileMode.Open); BinaryReader br = new BinaryReader(fs); long k = fs.Length;//Размер файла. format.Serialize(writerStream, k.ToString());//Вначале передаём размер while ((count = br.Read(buf, 0, 1024 )) > 0) { format.Serialize(writerStream, buf);//А теперь в цикле по 1024 байта передаём файл }
|
Сервер: | Код | cpListener clientListener = new TcpListener(34567); clientListener.Start(); TcpClient client = clientListener.AcceptTcpClient(); NetworkStream readerStream = client.GetStream(); BinaryFormatter outformat = new BinaryFormatter(); FileStream fs = new FileStream("111.jpg", FileMode.OpenOrCreate); BinaryWriter bw = new BinaryWriter(fs); int count; /*В следующей строчке error возникает: Не удается прочитать данные из транспортного соединения: Удаленный хост принудительно разорвал существующее подключение.*/ count = int.Parse(outformat.Deserialize(readerStream).ToSt ring());//Получаем размер файла int i=0; for (; i < count;i += 1024 )//Цикл пока не дойдём до конца файла { byte[] buf = (byte[])(outformat.Deserialize(readerStream));//Собственно читаем из потока и записываем в файл bw.Write(buf); } bw.Close(); fs.Close(); Console.ReadLine();
|
Подскажите какая может быть причина? |