Поле экземпляра класса не показывает сохраненное значение этого поля
Я разрабатываю приложение для отправки файлов из одной конечной системы (класс клиента) в другую конечную систему (класс сервера), в настоящее время я тестирую его на том же компьютере.
Я могу передать файл с клиента на сервер, но проблема в том, что расширение этого файла поступает на сервер. Теперь, чтобы решить эту проблему, я использовал строковую переменную, которая хранит тип расширения в классе клиента и ссылаясь на класс клиента, я могу использовать эту переменную в классе сервера.
Теперь проблема в том,
Когда я использую переменную (cl.extension) в классе сервера, он не возвращает значения.
Код класса клиента
namespace Client_App
{
public partial class Clients : Form
{
public string extension;
//Create the instance of TcpClient Class so that we can use the methods and properties of that class
TcpClient clientsocket = new TcpClient();
public Clients()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
//It connect client to the specified server with the ip address and the port number
//By here the server replies that the connection has been established after executing the next statement
clientsocket.Connect("127.0.0.1", 8888);
label2.Text = "From Server: Connected ";
}
private void button1_Click(object sender, EventArgs e)
{
//Here GetStream method send the message to the server
NetworkStream serverStream = clientsocket.GetStream();
OpenFileDialog ofd = new OpenFileDialog();
ofd.ShowDialog();
ofd.AddExtension = true;
string filename = ofd.FileName;
byte[] outStream = File.ReadAllBytes(filename);
//Variable that store the extension of file
extension = Path.GetExtension(filename);
serverStream.Write(outStream , 0, outStream.Length);
textBox2.Text = "File has been sended to server";
serverStream.Flush();
}
}
}
Код серверного класса
using Client_App;
public partial class Server : Form
{
Clients cl = new Clients();
TcpListener serverSocket = new TcpListener(8888);
TcpClient clientSocket = new TcpClient();
public Server()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
try
{
serverSocket.Start();
clientSocket = serverSocket.AcceptTcpClient();
NetworkStream serverStream = clientSocket.GetStream();
byte[] inStream = new byte[69000];
serverStream.Read(inStream, 0, clientSocket.ReceiveBufferSize);
//After reading the stream, it give user ability to save that stream by creating a file
SaveFileDialog sfd = new SaveFileDialog();
sfd.ShowDialog();
DicrectoryBox.Text = sfd.FileName + cl.extension;//Here is problem
MessageBox.Show(cl.extension);//It does not show the extension (of client file)
File.WriteAllBytes(DicrectoryBox.Text, inStream);
StatusBox.Text = "Writing Completed";
}
catch(Exception ex)
{
Console.WriteLine(ex.Message);
}
clientSocket.Close();
serverSocket.Stop();
}
}
Проблема с cl.extension в классе сервера, MessageBox не показывает расширение файла, который был отшлифован клиентом.