im пытается отправить файл через сокет, но я бы хотел также отправить имя файла, например.C# socket отправить информацию
это код посыла:
int count = 0;
int size;
private int SendVarData(Socket s, byte[] data)
{
total = 0;
int size = data.Length;
int dataleft = size;
int sent;
datasize = BitConverter.GetBytes(size);
sent = s.Send(datasize);
sent = s.Send(data, total, dataleft, SocketFlags.None);
total += sent;
dataleft -= sent;
// MessageBox.Show("D");
return total;
}
это вызов
byte[] arr = File.ReadAllBytes(file);
SendVarData(sc, arr);//sc is a socket ofcourse.
я хотел бы послать также имя файла, как я сказал. должен ли я отправить его один раз перед отправкой файла? или есть другой эффективный способ отправить оба?
это код получить:
private byte[] ReceiveVarData(Socket s)
{
int total = 0;
int recv;
byte[] datasize = new byte[4];
recv = s.Receive(datasize, 0, 4, 0);
size = BitConverter.ToInt32(datasize, 0);
int dataleft = size;
//MessageBox.Show(size.ToString());
byte[] data = new byte[size];
while (total < size)
{
recv = s.Receive(data, total, dataleft, 0);
if (recv == 0)
{
break;
}
total += recv;
dataleft -= recv;
}
return data;
}
любая помощь будет apperciated.
Большое спасибо, но я бы не хотел использовать сетевые потоки в моем проекте (личная причина, по которой это действительно не важно, почему: D), но если я хочу отправить имя файла и прочитать его (только имя) В первый раз. Я также должен создать буфер, который длиннее имени.lenth. как я могу узнать длину имени файла? я должен отправить его еще до отправки ** имени файла **? @Giorgi –
@itapi: да, отправьте его тоже –
один последний вопрос, теперь мне нужно отправить длину имени файла, как вы сказали. как я могу узнать длину длины имени файла? я имею в виду, если его 12 символов, так что 12 на самом деле 2 строки длины. как я могу узнать в другой стороне, какая длина и сколько читать в этой строке? 'recv = s.Receive (datasize, 0, XXX, 0);' –