Я получил этот код, который работает при передаче файла с сервера на клиента .
Как мне заставить его работать с клиента до сервер .
Это отдельное приложение чата LAN Messenger, с которым я играю.
- чат
- передача файлов
- NAudio Голосовой чат
сервер
//ftp Server
public void beginftpserver()
{ //start ftp server
ftp_listener.Start();
ftpClient = ftp_listener.AcceptTcpClient();
NetworkWriter = new StreamWriter(ftpClient.GetStream(), Encoding.UTF8);
NetworkStreamReader = new StreamReader(ftpClient.GetStream(), Encoding.UTF8);
while (true)
{
if (ftpClient.Connected)
{
string data = string.Empty;
while (!NetworkStreamReader.EndOfStream)
{
data = NetworkStreamReader.ReadLine();
filename = data.Split('\\')[0];
data = data.Split('*')[1];
File.WriteAllBytes(filename, Convert.FromBase64String(data));
this.textBox1.Invoke(new MethodInvoker(delegate ()
{
string download = "file has been downloaded ... " + filename;
textBox1.AppendText(download + Environment.NewLine);
}));
}
NetworkStreamReader.Close();
ftpClient.Close();
}
}
}
private void bt_ftp_Click(object sender, EventArgs e)
{
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
_filePath = openFileDialog1.FileName;
label1.Text = openFileDialog1.SafeFileName + $" \\ {openFileDialog1.SafeFileName.Split('.')[1]}";
NetworkWriter = new StreamWriter(ftpClient.GetStream(), Encoding.UTF8);
byte[] filebuffer = File.ReadAllBytes(_filePath);
//converts the specified string, which encodes binary data as base-64 digits, to an equivalent 8-bit unsigned integer array.
string base64encodestr = Convert.ToBase64String(filebuffer);
_fileContent = base64encodestr;
NetworkWriter.Write($"{openFileDialog1.SafeFileName}\\* {_fileContent}");
//Text = "File successfully sended.";
this.textBox1.Invoke(new MethodInvoker(delegate ()
{
textBox1.AppendText("File successfully sended ... " + Environment.NewLine);
}));
NetworkWriter.Close();
}
}
клиент
//ftp
public void beginftpClient()
{
ftpclient = new TcpClient();
ftpclient.Connect("192.168.1.160", 87);
}
private void RecieveFile ()
{
string data = string.Empty;
StreamReader NetworkStreamReader = new StreamReader(ftpclient.GetStream(), Encoding.UTF8);
while (!NetworkStreamReader.EndOfStream)
{
data = NetworkStreamReader.ReadLine();
filename = data.Split('\\')[0];
data = data.Split('*')[1];
File.WriteAllBytes(filename, Convert.FromBase64String(data));
}
this.textBox1.Invoke(new MethodInvoker(delegate ()
{
string download = "file has been downloaded ... " + filename;
textBox1.AppendText(download + Environment.NewLine);
}));
NetworkStreamReader.Close();
}
//
private void bt_ftp_Click(object sender, EventArgs e)
{
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
_filePath = openFileDialog1.FileName;
label1.Text = openFileDialog1.SafeFileName + $" \\ {openFileDialog1.SafeFileName.Split('.')[1]}";
NetworkWriter = new StreamWriter(ftpclient.GetStream(), Encoding.UTF8);
byte[] filebuffer = File.ReadAllBytes(_filePath);
//converts the specified string, which encodes binary data as base-64 digits, to an equivalent 8-bit unsigned integer array.
string base64encodestr = Convert.ToBase64String(filebuffer);
_fileContent = base64encodestr;
NetworkWriter.Write($"{openFileDialog1.SafeFileName}\\* {_fileContent}");
//Text = "File successfully sended.";
this.textBox1.Invoke(new MethodInvoker(delegate ()
{
textBox1.AppendText("File successfully sended ... " + Environment.NewLine);
}));
NetworkWriter.Close();
}
}