Как отправить / получить несколько файлов, используя один сокет? Я не знаю, что я делаю не так. Здесь я пытаюсь отправить один файл, но он не работает. Как правильно отправлять / получать несколько файлов через один сокет?
Вот мой код сервера. [сервер является отправителем]
static void sendfile(Socket soc, IPEndPoint address)
{
try
{
soc.Bind(address);
soc.Listen(1);
Console.WriteLine("Listening for connection...");
Socket client = soc.Accept();
Console.WriteLine("Got connection from : {0}",
client.RemoteEndPoint.ToString());
while (true)
{
// send filename
string filename = "file1.exe";
client.Send(Encoding.ASCII.GetBytes(filename));
Console.WriteLine("filename has been send.");
// send filesize
int filesize = 31245;
client.Send(BitConverter.GetBytes(filesize));
Console.WriteLine("filesize has been send.");
// send file's content
string filedata = "Hey This is file1's content.";
client.Send(Encoding.ASCII.GetBytes(filedata));
Console.WriteLine("FileData has been send.");
break;
}
client.Close();
soc.Close();
Console.WriteLine("socket closed.");
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
}
Вот мой код клиента. [клиент получатель]
static void receivefile(Socket soc, IPEndPoint address)
{
try
{
while (true)
{
// Receiving filename.
byte[] bytes = new byte[1024];
soc.Receive(bytes);
string filename = Encoding.ASCII.GetString(bytes);
Console.WriteLine("Filename : {0}", filename);
// Receiving filesize.
bytes = new byte[1024];
soc.Receive(bytes);
int filesize = BitConverter.ToInt16(bytes, 0);
Console.WriteLine("Filesize : {0}", filesize);
// Receiving file's content.
bytes = new byte[1024];
soc.Receive(bytes);
string filedata = Encoding.ASCII.GetString(bytes);
Console.WriteLine("FileData : {0}", filedata);
break;
}
soc.Close();
Console.WriteLine("socket closed.");
}
catch (Exception e)
{
Console.WriteLine(e.ToString());
}
}
Выход сервера:
Listening for connection...
Got connection from : [fe80::89ad:7840:e1d0:4ce%11]:49909
filename send.
filesize send.
FileData send.
socket closed.
Выход клиента:
connected to [fe80::89ad:7840:e1d0:4ce%11]:11001
Filename : file1.exe3124564Hey This is file1.exe
Filesize :
FileData :
socket closed.