Эти файлы являются папками bin
и obj
, которые являются выходными данными сборки. Поскольку они представляют собой выходные данные сборки, они будут меняться при каждом запуске сборки, и не следует проверять в .
Другая папка - это папка .vs
, которая содержит индивидуальные данные для вашего компьютера о ваших предпочтениях, настройках и некоторых других вещах, связанных с этим решением. Это также не должно быть зарегистрировано.
Просто удалите их из репозитория и добавьте папки в файл .gitignore.
ArgumentException
сообщает, что формат изображения в потоке недопустим. Что, вероятно, вызвано тем, что клиентское приложение закрывает поток памяти перед отправкой данных.
Попробуйте заменить byte [] bmpBytes = ms.GetBuffer ();
на
byte[] bmpBytes = ms.ToArray();
или закрыть поток после отправки данных.
Помните, что массив байтов, возвращаемый ] .GetBuffer ()
возвращает базовый массив, а не его копию ( .ToArray ()
возвращает копию), который действителен до тех пор, пока родительский поток.
Если у вас есть доступ к самому файлу JPG (как в примере), вы должны отправить байты файла, а не используйте классы Image / Bitmap. Читая файл JPG и перекодируя его в JPG, вы снижаете качество изображения и получаете ненужные накладные расходы. Вы можете использовать File.ReadAllBytes ()
, чтобы быстро получить полный байт []
или прочитать / отправить его по частям, если объем памяти ограничен.
Use Arul's code to get the data to send correctly -- you want .ToArray(), not .GetBuffer(). Then, you'll want to run the server's 'startListening' method on a background thread or you won't actually see anything (as the form thread will be busy running the server code. Try:
var t = new Thread(startListening);
t.IsBackground = true;
t.start();
In your Form_Load method instead of directly calling startListening in your constructor.
Лучшим способом отправки изображения было бы использование BinaryFormatter.
например, некоторые фрагменты из моего собственного кода для отправки изображения каждую секунду. ..
отправка:
TcpClient client = new TcpClient();
try
{
client.Connect(address, port);
// Retrieve the network stream.
NetworkStream stream = client.GetStream();
MessageData data = new MessageData(imageToSend);
IFormatter formatter = new BinaryFormatter();
while(true)
{
formatter.Serialize(stream, data);
Thread.Sleep(1000);
data.GetNewImage();
}
}
получение: