Передача файлов по сети - C#
Формулировка задачи:
День добрый) Вообщем пишу клиент-серверную оболочку для управления мат. моделированием.
Пока решаю проблему передачи данных от клиента к серверу. Передавать один файл у меня получается(переданный файл записывается сервером в Data.txt), но их нужно передать несколько(чтобы остальные полученные файлы сервер записывал в Data1.txt, Data2.txt, Data3.txt и тд) Подскажите, как это реализовать? Точнее, я понимаю, что это скорее всего нужно реализовывать с помощью цикла, но так как программист я не очень, то не имею ни малейшего понятия как это сделать) Поэтому лучше покажите)) В любом случае, буду благодарен любой помощи.
Вот код сервера:
Код клиента:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.Net.Sockets;
using System.IO;
namespace ConsoleApplicationServer
{
class Program
{
static void Main(string[] args)
{
IPHostEntry ipHost = Dns.Resolve("localhost");
IPAddress ipAdr = ipHost.AddressList[0];
IPEndPoint ipEndPoint = new IPEndPoint(ipAdr, 11000);
Socket sListener = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
try
{
sListener.Bind(ipEndPoint);
sListener.Listen(10);
while (true)
{
Console.WriteLine("Ожидание подключения на порту {0}", ipEndPoint);
Socket handler = sListener.Accept();
string data = null;
while (true)
{
byte[] bytes = new byte[1024];
int byteRes = handler.Receive(bytes);
data += Encoding.ASCII.GetString(bytes, 0, byteRes);
break;
}
Console.WriteLine("Данные получены: {0}", data);
string TheReply = "Данные приняты";
byte[] msg = Encoding.ASCII.GetBytes(TheReply);
Directory.CreateDirectory(@"E:\\Project1");
FileStream fileS = new FileStream(@"E:\\Project1\Data.txt", FileMode.Create, FileAccess.Write);
StreamWriter sw = new StreamWriter(fileS);
StringBuilder sb;
sb = new StringBuilder();
sb.Append(data);
sw.Write(sb.ToString());
sw.Close();
handler.Send(msg);
handler.Shutdown(SocketShutdown.Both);
handler.Close();
}
}
catch (Exception e)
{
Console.WriteLine(e.ToString());
}
}
}
}using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Net;
using System.Net.Sockets;
namespace WFClient
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
openFileDialog1.ShowDialog();
textBox2.Text = openFileDialog1.FileName;
FileStream fs = new FileStream(textBox2.Text,FileMode.Open, FileAccess.Read);
byte[] readBuf = new byte[fs.Length];
fs.Read(readBuf,0,(Convert.ToInt32(fs.Length)));
textBox3.Text = Encoding.ASCII.GetString(readBuf);
}
private void button2_Click(object sender, EventArgs e)
{
byte[] bytes = new byte[1024];
try
{
IPHostEntry ipHost = Dns.GetHostEntry("127.0.0.1");
IPAddress ipAdr = ipHost.AddressList[0];
IPEndPoint ipEndPoint = new IPEndPoint(ipAdr, 11000);
Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
socket.Connect(ipEndPoint);
FileStream fs = new FileStream(textBox2.Text, FileMode.Open, FileAccess.Read);
byte[] readBuf = new byte[fs.Length];
fs.Read(readBuf, 0, (Convert.ToInt32(fs.Length)));
int bytesSend = socket.Send(readBuf);
int bytesRec = socket.Receive(bytes);
textBox1.Text = ("Подключен к " + socket.RemoteEndPoint.ToString() + "\r\nОт сервера получено: " + Encoding.ASCII.GetString(bytes, 0, bytesRec));
socket.Shutdown(SocketShutdown.Both);
socket.Close();
}
catch (Exception ex)
{
textBox1.Text = ("Ошибка: " + ex.ToString());
}
}
}
}Решение задачи: «Передача файлов по сети»
textual
Листинг программы
byte[] bytes = new byte[1024];
int byteRes = socket.Receive(bytes);
data += Encoding.ASCII.GetString(bytes, 0, byteRes);
if (byteRes < 1024)
{
string TheReply = "Data recieved";
byte[] msg = Encoding.ASCII.GetBytes(TheReply);
Directory.CreateDirectory(@"E:\\Project1");
FileStream fileS = new FileStream(@"E:\\Project1\start.txt", FileMode.Create, FileAccess.Write);
StreamWriter sw = new StreamWriter(fileS);
StringBuilder sb;
sb = new StringBuilder();
sb.Append(data);
sw.Write(sb.ToString());
sw.Close();
handler.Send(msg);
handler.Shutdown(SocketShutdown.Both);
handler.Close();
break;