Как реализовать передачу данных и файлов по протоколу TCP?
и еще при подключении клиента возникает ошибка "Подключение не установлено, т.к. конечный компьютер отверг запрос на подключение"
при двойном нажатии на папку, она должна открываться, а файлы открываться, код для этого есть но будет ли работать по сети не уверена
Код:
string CorS;
private TcpListener Server;
private TcpClient remoteClient;
private TcpClient localClient;
private Thread thClient;
private Thread thServer;
private void btnServer_Click(object sender, EventArgs e)
{
Server = new TcpListener(IPAddress.Any, 6785);
Server.Start();
thServer = new Thread(() =>
{
remoteClient = Server.AcceptTcpClient();
byte[] buffer = new byte[1024];
while (remoteClient.Connected)
{
Array.Clear(buffer, 0, buffer.Length);
remoteClient.GetStream().Read(buffer, 0, 1024);
string strData = Encoding.Default.GetString(buffer);
}
});
thServer.Start();
CorS = "s";
ClientServer();
}
private void btnConnect_Click(object sender, EventArgs e)
{
localClient = new TcpClient();
localClient.Connect("127.0.0.1", 6785);
thClient = new Thread(() =>
{
while (localClient.Connected)
{
byte[] buffer = new byte[1024];
while (localClient.Connected)
{
Array.Clear(buffer, 0, buffer.Length);
localClient.GetStream().Read(buffer, 0, 1024);
string strData = Encoding.Default.GetString(buffer);
}
}
});
thClient.Start();
MessageBox.Show("45245234");
CorS = "c";
ClientServer();
}
#region //Клиент сервер
public void ClientServer()
{
string infoToSend = GetLocDir();
byte[] dataToSend = Encoding.Default.GetBytes(infoToSend);
if (CorS == "c")
{
if (localClient != null && localClient.Connected)
{
localClient.GetStream().Write(dataToSend, 0, dataToSend.Length);
}
}
else if (CorS == "s")
{
}
}
#endregion
#region //ВЫВОД ФАЙЛОВ
public static string FPath;
public static string backPath;
List<string> ls = new List<string>();
public static string GetLocDir()
{
String[] LogicalDrives = Environment.GetLogicalDrives();
string dir = String.Join("/", LogicalDrives);
return dir;
}
public static string GetDirectories()
{
string[] dir = Directory.GetDirectories(FPath);
string poddir = String.Join("/", dir);
return poddir;
}
public static string GetFiles()
{
string[] files = Directory.GetFiles(FPath);
string file = String.Join("/", files);
return file;
}
private TcpListener Server;
private TcpClient remoteClient;
private TcpClient localClient;
private Thread thClient;
private Thread thServer;
private void btnServer_Click(object sender, EventArgs e)
{
Server = new TcpListener(IPAddress.Any, 6785);
Server.Start();
thServer = new Thread(() =>
{
remoteClient = Server.AcceptTcpClient();
byte[] buffer = new byte[1024];
while (remoteClient.Connected)
{
Array.Clear(buffer, 0, buffer.Length);
remoteClient.GetStream().Read(buffer, 0, 1024);
string strData = Encoding.Default.GetString(buffer);
}
});
thServer.Start();
CorS = "s";
ClientServer();
}
private void btnConnect_Click(object sender, EventArgs e)
{
localClient = new TcpClient();
localClient.Connect("127.0.0.1", 6785);
thClient = new Thread(() =>
{
while (localClient.Connected)
{
byte[] buffer = new byte[1024];
while (localClient.Connected)
{
Array.Clear(buffer, 0, buffer.Length);
localClient.GetStream().Read(buffer, 0, 1024);
string strData = Encoding.Default.GetString(buffer);
}
}
});
thClient.Start();
MessageBox.Show("45245234");
CorS = "c";
ClientServer();
}
#region //Клиент сервер
public void ClientServer()
{
string infoToSend = GetLocDir();
byte[] dataToSend = Encoding.Default.GetBytes(infoToSend);
if (CorS == "c")
{
if (localClient != null && localClient.Connected)
{
localClient.GetStream().Write(dataToSend, 0, dataToSend.Length);
}
}
else if (CorS == "s")
{
}
}
#endregion
#region //ВЫВОД ФАЙЛОВ
public static string FPath;
public static string backPath;
List<string> ls = new List<string>();
public static string GetLocDir()
{
String[] LogicalDrives = Environment.GetLogicalDrives();
string dir = String.Join("/", LogicalDrives);
return dir;
}
public static string GetDirectories()
{
string[] dir = Directory.GetDirectories(FPath);
string poddir = String.Join("/", dir);
return poddir;
}
public static string GetFiles()
{
string[] files = Directory.GetFiles(FPath);
string file = String.Join("/", files);
return file;
}
- "Подключение не установлено, т.к. конечный компьютер отверг запрос на подключение" Порт подключения открыт? от cronya, 22 мая 2016 года
да с этим уже разобралась, но загрузка файла все еще не решена
Код:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private TcpListener Server;
private TcpClient remoteClient; private TcpClient localClient;
private Thread thClient; private Thread thServer;
private void btnServer_Click(object sender, EventArgs e)//кнопка сервер
{
Server = new TcpListener(IPAddress.Any, 6785);
Server.Start();
thServer = new Thread(() =>
{
remoteClient = Server.AcceptTcpClient();
SendData(GetLocDir());
byte[] buffer = new byte[1024];
while (remoteClient.Connected)
{
Array.Clear(buffer, 0, buffer.Length);
remoteClient.GetStream().Read(buffer, 0, 1024);
string strData = Encoding.Default.GetString(buffer);
this.Invoke((Action)(() =>
{
string[] tx = strData.Split('\');
foreach (string s in tx)
{
listView1.Items.Add(s, 1);
ls.Add(s);
}
}));
// strData = "C:\1.txt"
}
});
thServer.Start();
}
private void btnConnect_Click(object sender, EventArgs e)//кнопка клиент
{
localClient = new TcpClient();
localClient.Connect("127.0.0.1", 6785);
thClient = new Thread(() =>
{
byte[] buffer = new byte[1024];
while (localClient.Connected)
{
Array.Clear(buffer, 0, buffer.Length);
localClient.GetStream().Read(buffer, 0, 1024);
string strData = Encoding.Default.GetString(buffer);
this.Invoke((Action)(() =>
{
string[] tx = strData.Split('/');
foreach (string s in tx)
{
listView1.Items.Add(s, 1);
ls.Add(s);
}
}));
}
});
thClient.Start();
SendData(GetLocDir());
}
#region //Клиент сервер
public void SendData(string infoToSend)
{
byte[] dataToSend = Encoding.Default.GetBytes(infoToSend);
if (localClient != null && localClient.Connected)
{
localClient.GetStream().Write(dataToSend, 0, dataToSend.Length);
}
else if (remoteClient != null && remoteClient.Connected)
{
remoteClient.GetStream().Write(dataToSend, 0, dataToSend.Length);
}
}
public void btnDisplay_Click(object sender, EventArgs e)//начальная директория
{
SendData(GetLocDir());
}
private void listView1_ItemActivate(object sender, EventArgs e)//при нажатии на элемент, открытие файла или папки
{
//SendData("1|C:\");
//SendData("2|C:\1.txt");
if (listView1.SelectedItems.Count == 0)
return;
ListViewItem item = listView1.SelectedItems[0];
SendData(item.Text);
if (item.ImageIndex == 1)
{
string it = item.Text;
string title = "";
foreach (string s in ls)
{
try
{
if (s.Substring(s.Length - it.Length, it.Length) == it)
{
FPath = s;
title = s;
}
}
catch { }
}
try
{
string[] dirs = Directory.GetDirectories(FPath);
string poddir = String.Join("/", dirs);
this.Text = title;
GetFiles();
}
catch (Exception ex) { MessageBox.Show(ex.Message); }
}
else if (item.ImageIndex == 0)
{
string start = this.Text + "\" + item.Text;
System.Diagnostics.Process.Start(start);
}
}
private void btnDownload_Click(object sender, EventArgs e)//загрузка файла
{
ListViewItem item = listView1.SelectedItems[0];
if (folderBrowserDialog1.ShowDialog() == DialogResult.OK)
{
string path1 = folderBrowserDialog1.SelectedPath + "\" + item.Text;
string path2 = FPath + "\" + Convert.ToString(item.Text);
try
{
////////
}
catch (Exception fe)
{
MessageBox.Show(fe.Message);
throw;
}
}
}
#endregion
#region //ВЫВОД ФАЙЛОВ
public static string FPath;
public static string backPath;
List<string> ls = new List<string>();
public static string GetLocDir()
{
String[] LogicalDrives = Environment.GetLogicalDrives();
string dir = String.Join("/", LogicalDrives);
return dir;
}
public static string GetDirectories()
{
string[] dir = Directory.GetDirectories(FPath);
string poddir = String.Join("/", dir);
return poddir;
}
public static string GetFiles()
{
string[] files = Directory.GetFiles(FPath);
string file = String.Join("/", files);
return file;
}
#endregion
{
public Form1()
{
InitializeComponent();
}
private TcpListener Server;
private TcpClient remoteClient; private TcpClient localClient;
private Thread thClient; private Thread thServer;
private void btnServer_Click(object sender, EventArgs e)//кнопка сервер
{
Server = new TcpListener(IPAddress.Any, 6785);
Server.Start();
thServer = new Thread(() =>
{
remoteClient = Server.AcceptTcpClient();
SendData(GetLocDir());
byte[] buffer = new byte[1024];
while (remoteClient.Connected)
{
Array.Clear(buffer, 0, buffer.Length);
remoteClient.GetStream().Read(buffer, 0, 1024);
string strData = Encoding.Default.GetString(buffer);
this.Invoke((Action)(() =>
{
string[] tx = strData.Split('\');
foreach (string s in tx)
{
listView1.Items.Add(s, 1);
ls.Add(s);
}
}));
// strData = "C:\1.txt"
}
});
thServer.Start();
}
private void btnConnect_Click(object sender, EventArgs e)//кнопка клиент
{
localClient = new TcpClient();
localClient.Connect("127.0.0.1", 6785);
thClient = new Thread(() =>
{
byte[] buffer = new byte[1024];
while (localClient.Connected)
{
Array.Clear(buffer, 0, buffer.Length);
localClient.GetStream().Read(buffer, 0, 1024);
string strData = Encoding.Default.GetString(buffer);
this.Invoke((Action)(() =>
{
string[] tx = strData.Split('/');
foreach (string s in tx)
{
listView1.Items.Add(s, 1);
ls.Add(s);
}
}));
}
});
thClient.Start();
SendData(GetLocDir());
}
#region //Клиент сервер
public void SendData(string infoToSend)
{
byte[] dataToSend = Encoding.Default.GetBytes(infoToSend);
if (localClient != null && localClient.Connected)
{
localClient.GetStream().Write(dataToSend, 0, dataToSend.Length);
}
else if (remoteClient != null && remoteClient.Connected)
{
remoteClient.GetStream().Write(dataToSend, 0, dataToSend.Length);
}
}
public void btnDisplay_Click(object sender, EventArgs e)//начальная директория
{
SendData(GetLocDir());
}
private void listView1_ItemActivate(object sender, EventArgs e)//при нажатии на элемент, открытие файла или папки
{
//SendData("1|C:\");
//SendData("2|C:\1.txt");
if (listView1.SelectedItems.Count == 0)
return;
ListViewItem item = listView1.SelectedItems[0];
SendData(item.Text);
if (item.ImageIndex == 1)
{
string it = item.Text;
string title = "";
foreach (string s in ls)
{
try
{
if (s.Substring(s.Length - it.Length, it.Length) == it)
{
FPath = s;
title = s;
}
}
catch { }
}
try
{
string[] dirs = Directory.GetDirectories(FPath);
string poddir = String.Join("/", dirs);
this.Text = title;
GetFiles();
}
catch (Exception ex) { MessageBox.Show(ex.Message); }
}
else if (item.ImageIndex == 0)
{
string start = this.Text + "\" + item.Text;
System.Diagnostics.Process.Start(start);
}
}
private void btnDownload_Click(object sender, EventArgs e)//загрузка файла
{
ListViewItem item = listView1.SelectedItems[0];
if (folderBrowserDialog1.ShowDialog() == DialogResult.OK)
{
string path1 = folderBrowserDialog1.SelectedPath + "\" + item.Text;
string path2 = FPath + "\" + Convert.ToString(item.Text);
try
{
////////
}
catch (Exception fe)
{
MessageBox.Show(fe.Message);
throw;
}
}
}
#endregion
#region //ВЫВОД ФАЙЛОВ
public static string FPath;
public static string backPath;
List<string> ls = new List<string>();
public static string GetLocDir()
{
String[] LogicalDrives = Environment.GetLogicalDrives();
string dir = String.Join("/", LogicalDrives);
return dir;
}
public static string GetDirectories()
{
string[] dir = Directory.GetDirectories(FPath);
string poddir = String.Join("/", dir);
return poddir;
}
public static string GetFiles()
{
string[] files = Directory.GetFiles(FPath);
string file = String.Join("/", files);
return file;
}
#endregion
http://lwcom.ru/services/tekhnicheskaya-podderzhka/ Круглосуточно отвечают на звонки и решают большинство проблем удаленно. В крайнем случае приедет их программист и поможет вам.
У нас подобные проблемы решаются быстро специалистами IT-отдела. Кстати, когда не было еще штатного сотрудника, то обращались сюда