Передача файлов по сети - 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;

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 3.833 из 5
Похожие ответы