Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 3492624
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 18, 20262026-05-18T11:46:52+00:00 2026-05-18T11:46:52+00:00

I have 2 applications, one is server-app and the other is client-app. both are

  • 0

I have 2 applications, one is server-app and the other is client-app. both are on same computer.Client has one button. When this button is clicked, client starts downloading files from server.
The problem is, sometimes client side received all files successfully, but sometimes client side only received the 1st file then stop transferring. Is there something wrong with the code below? could any1 show me where I’m wrong? I’m just new to coding like this.
help is much appreciated. Thanks in advance.
Here is the code:

When user click a button on client, client will send a request download files from server:

//client side
sendRequest("requestFiles ");

Server will prepare files for client to download after receive token requestFiles

// server side
if (execmd == "requestFiles")
{
    string[] fList = Directory.GetFiles(folderDir);
    for (int i = 0; i < fList.Length; i++)
    {
        FileInfo fi = new FileInfo(fList[i]);
        string[] mDesc = new string[3];
        mDesc[0] = fi.Name;
        mDesc[1] = fi.Length.ToString();
        mDesc[2] = fi.FullName;
        string fileSend = "CommitRequest " + fi.Name + " " + fi.Length.ToString() + " " + usID + " " + mName;
        sendRequest(fileSend);
        ClientDownloadingFromServer(mDesc[2], mDesc[1], sock);
    }
    sendComment("AllUpDone");
    continue;
}

For each file needs to upload, server will send a token CommitRequest with details of the file (name, size)
When client receives CommitRequest:

//client side
if (execmd == "CommitRequest")
{
    //get file name and file size
    downloadFileFromServer(sock);
    continue;
}

Method downloadFileFromServer at client:

//client side
private void downloadMapFromServer(Socket s)
{        
    Socket sock = s;
    //prepare directory rootDir to store file
    System.IO.FileStream fout = new System.IO.FileStream(rootDir + "\\" + fileN, FileMode.Create, FileAccess.Write);
    NetworkStream nfs = new NetworkStream(sock);
    long size = int.Parse(fileS);
    long rby = 0;
    try
    {
        //loop till the Full bytes have been read
        while (rby < size)
        {
            byte[] buffer = new byte[1024];
            //Read from the Network Stream
            int i = nfs.Read(buffer, 0, buffer.Length);
            fout.Write(buffer, 0, (int)i);
            rby = rby + i;
        }
        fout.Close();
    }
    catch (Exception ed)
    {
        Console.WriteLine("A Exception occured in file transfer" + ed.ToString());
        MessageBox.Show(ed.Message);
    }
}

Method clientDownloadFromServer at server side:

//server side
void ClientDownloadingFromServer(string fiPath, string fiSize, Socket s)
{
    string parm1 = fiPath;
    string parm2 = fiSize;
    try
    {
        FileInfo ftemp = new FileInfo(parm1);
        long total=ftemp.Length;
        long rdby=0 ;
        int len=0 ;
        byte[] buffed = new byte[1024] ;
        // Open the file requested for download 
        System.IO.FileStream fin = new System.IO.FileStream(parm1,FileMode.Open , FileAccess.Read) ;

        NetworkStream nfs = new NetworkStream(sock) ;

        while(rdby < total && nfs.CanWrite)
        {
             //Read from the File (len contains the number of bytes read)
             len =fin.Read(buffed,0,buffed.Length) ;
             //Write the Bytes on the Socket
             nfs.Write(buffed, 0,len);
             //Increase the bytes Read counter
             rdby=rdby+len ;    
        }
        fin.Close();
    }
}
  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-18T11:46:53+00:00Added an answer on May 18, 2026 at 11:46 am

    Issue is related to treating receiving bytes as file bytes or token bytes. Your client code is trying to read bytes that are equal to buffer size. Server sends “CommitRequest” token and file bytes one after another. So let’s say first file size is of 1200 bytes. Server will send these 1200 bytes followed by “CommitRequest” for second file followed by second file bytes. Now, client would read 1024 bytes of first file. And then it would read next 1024 bytes – but these bytes will contain remaining 176 bytes of first file, “CommitRequest” response from server and then first few bytes of second file. Your client code only takes first 176 bytes and ignoring next bytes that would have data for next file.

    You can solve the issue in two ways – either by making sure that remaining bytes would be processed (this can be tricky because remaining bytes may have “CommitRequest” response partially) or re-structuring your solution so that each file transfer will be initiated only after client request.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I have two separated applications, one written in Java and other in Erlang. Both
I have 2 applications - one EAR containing EJB3.0 and other its Spring client.
I have some client-server application. And as one of its part, I need to
I have two applications. One is a Java thick client Swing GUI for controlling
I have this simple client-server application pair. The code is pretty simple, I'm using
I have a server and a client app, my server listens on port 10015
I am developing two web applications where one is a server app and the
I have 2 codeigniter installs running on the same server. the first app is
i have a client who says they want an messaging based app which has
I have two java applications, one is web app and another is simple java

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.