передача !файлов! по сети

Тема в разделе ".NET", создана пользователем met123, 24 май 2007.

  1. met123

    met123 Гость

    Одним словом есть клиентское приложения которое отправляет файлы на сервер
    В клиентском приложении все просто


    private NetworkStream streamtoserver;
    private StreamWriter writer;

    public client(string str)
    {
    TcpClient tcpsocket=new TcpClient (str,65000);
    streamtoserver = tcpsocket.GetStream();
    writer = new StreamWriter(streamtoserver);
    }



    потом я отсылаю на сервер через поток writer связанный с сетевым потоком streamtoserver имя файла с этого компа.


    public void run(string filename)
    {

    writer.Write(filename);
    writer.Flush();
    streamtoserver.Close();
    }


    На сервере я принимаю через поток связанный с сокетом клиента имя файла (только фрагмент асинхронного чтения):


    public void startread()
    {
    networkstream.BeginRead(buffer, 0, buffer.Length, callbackread, null);
    }

    private void OnComleteRead(IAsyncResult ar)
    {
    int bytesread=networkstream.EndRead(ar);
    if(bytesread >0)
    {
    .................
    filename = Encoding.UTF8.GetString(buffer, 0, bytesread);
    ......

    }




    Потом я связ с этим файлом поток и считую инфу и записую уже в файл на сервере


    inputstream = File.OpenRead(filename);
    outputstream = File.OpenWrite(ouputfile);
    inputstream.BeginRead(buffer, 0, buffer.Length, callbackfile, null);

    .................................................
    private void OnFileComleteRead(IAsyncResult asyncresult)
    {
    int bytesread=inputstream.EndRead(asyncresult);
    if (bytesread > 0)
    {
    outputstream.BeginWrite(buffer, 0, buffer.Length, callbackwrite, null);
    outputstream.Flush();

    }


    Но вот я пока данную прогу тестирую на одном компе , использую внутренний айпишник все работает
    но когда я буду использовать два компа, мне кажеться, -- тогда когда я передам на сервер имя файл то он тогда будет искать этот файл на сервере а не на клиенте.
    Поэтому мне надо как то в клиенте передавать после имени файла и его содержимое в сетевой поток , а потом его считывать на сервере з потока связанного с сокетом клиента.
    как это реализовать , или я не прав и все и так будет работать.????

    я заметил что только StreamWriter или StreamReader можно связ с сетев потоком:

    private StreamWriter writer;
    writer = new StreamWriter(streamtoserver);

    Но как мне вместо имени файла потом впихнуть в этот поток и его содержимое

    writer.Write(filename);
    writer.Flush();


    Помогите плз или подскажите варианты реализации!!!!!!!!!!!!!!!!!!!
     
  2. mms

    mms Гость

    Надо передавать не имя файла, а его содержимое. Либо и имя и содержимое, это как требуется.

    Запихнуть в поток содержимое так же просто, как и имя файла. Надо просто прочитать файл и считайные байты файла запихнуть в поток сокета.
     
  3. met123

    met123 Гость

    блин а куда считать в буфер? а потом как запихнуть содержимое буфера в Networkstream?
    мож примерчик?
     
  4. mms

    mms Гость

    Ну к примеру так:

    Код (Text):
                using (StreamReader reader = new StreamReader(new FileStream("C:\\Test.txt")))
    using (StreamWriter writer = new StreamWriter(streamtoserver))
    {
    writer.Write(reader.ReadToEnd());
    }
    Хотя лучше конечно читать и писать сразу байты.
     
Загрузка...
Похожие Темы - передача файлов по
  1. Shouldercannon
    Ответов:
    0
    Просмотров:
    379
  2. victorhalf
    Ответов:
    6
    Просмотров:
    4.574
  3. Corexis
    Ответов:
    0
    Просмотров:
    63
  4. Shouldercannon
    Ответов:
    0
    Просмотров:
    480
  5. 123456789igor
    Ответов:
    0
    Просмотров:
    801

Поделиться этой страницей