473,654 Members | 3,089 Online
Bytes | Software Development & Data Engineering Community
+ Post

Home Posts Topics Members FAQ

NetworkStream tcp error

I am trying to us a simple NetworkStream to transfer a file over tcp. This
works most of the time, but one specific file never downloads(.mdb file). It
seems to close the socket and I get an "unable to write data to transport
connection" error. I have tried multiple ways to transfer this
file(including remoting, sockets without network stream) and downloaded
different examples of client/server byte transfer, all with the same result.
The file downloads around 705kb and stops. File size seems to have nothing
to do with it. The really strange thing is that if I reverse the bytes and
then send the file, it works, but the db is almost always corrupt on the
other side.

Here is the client:

using System;
using System.Diagnost ics;
using System.Runtime. Remoting;
using System.Net;
using System.Net.Sock ets;
using System.Threadin g;
using System.IO;
namespace C4I.FileTransfe r
{
/// <summary>
/// Summary description for FileTransferCli ent.
/// </summary>
public class FileTransferCli ent
{
private int _instanceNumber ;
private Socket clientSocket;
private bool _isReceiving = false;
public bool isReceiving{get {return _isReceiving;}}
private string _ipAddress;
private int _port;
public FileTransferCli ent(int instanceNumber, string ipAddress, int port)
{
_instanceNumber = instanceNumber;
_ipAddress = ipAddress;
_port = port;
}

int _fileLength;
string _fileName;
Thread receiveThread;
public void ReceiveFile(str ing fileName, int fileLength)
{
_fileName = fileName;
clientSocket = new Socket(AddressF amily.InterNetw ork, SocketType.Stre am,
ProtocolType.Tc p);
//clientSocket.Se tSocketOption(S ocketOptionLeve l.Socket,
SocketOptionNam e.ReuseAddress, 1);
IPHostEntry IPHost = Dns.Resolve(_ip Address);
IPEndPoint endPoint = new IPEndPoint(IPHo st.AddressList[0], _port);
clientSocket.Co nnect(endPoint) ;
receiveThread = new Thread(new ThreadStart(Rec eiveFile));
receiveThread.N ame = "Receive Thread";
_fileLength = fileLength;
receiveThread.S tart();
}
private void ReceiveFile()
{
try
{
FileStream fs = null;
try
{
if (!File.Exists(_ fileName))
fs = File.Create(_fi leName);
else
fs = new FileStream(_fil eName, FileMode.Create , FileAccess.Read Write);
int count = 0;
NetworkStream nfs = new NetworkStream(c lientSocket);
while (count < _fileLength)
{
byte[] buffer = new byte[1024];
_isReceiving = true;
int i = nfs.Read(buffer , 0 , buffer.Length);
fs.Write(buffer , 0, (int)i);
count = count + i;
}
_isReceiving = false;
fs.Close();
}
catch (Exception exc)
{
Trace.WriteLine (exc.Message);
try
{
_isReceiving = false;
fs.Close();
}
catch{}
}
}
catch (Exception exc)
{
Trace.WriteLine (exc.Message);
_isReceiving = false;
}
}

}

and here is the server
using System;
using System.Diagnost ics;
using System.IO;
using System.Runtime. Remoting;
using System.Runtime. Remoting.Channe ls;
using System.Net.Sock ets;
using System.Net;
using System.Threadin g;
namespace C4I.FileTransfe r
{
/// <summary>
/// Summary description for FileTransferSer ver.
/// </summary>
public class FileTransferSer ver
{
Socket _serverSocket;
Socket _clientSocket;
Thread listenThread;
string _ipAddress;
int _port;
public FileTransferSer ver(string ipAddress, int port)
{
_ipAddress = ipAddress;
_port = port;
listenThread =new Thread(new ThreadStart(Lis tenForClients)) ;
listenThread.Na me = "File Transfer listen thread";
listenThread.St art();
}

public void ListenForClient s()
{
_serverSocket = new Socket(AddressF amily.InterNetw ork, SocketType.Stre am,
ProtocolType.Tc p);
IPHostEntry IPHost = Dns.Resolve(_ip Address);
IPEndPoint endPoint = new IPEndPoint(IPHo st.AddressList[0], _port);
_serverSocket.B locking = true;
_serverSocket.B ind(endPoint);
_serverSocket.L isten(-1);
try
{
_clientSocket = _serverSocket.A ccept();
}
catch{}
}
NetworkStream ns = null;
public void SendFile(string fileName)
{
if (_clientSocket == null || !_clientSocket. Connected)
{
End(false);
ListenForClient s();
}
Thread.Sleep(10 00);
FileStream fs = new FileStream(file Name, FileMode.Open, FileAccess.Read );
byte[] buffer = new byte[1024];
ns = new NetworkStream(_ clientSocket);
int count = 0;
int length = (int)fs.Length;
try
{
while (count < length && ns.CanWrite)
{
int bytesRead = fs.Read(buffer, 0, buffer.Length);
ns.Write(buffer , 0, bytesRead);
count += bytesRead;
}
}
catch
{
End(false);
ListenForClient s();
}
finally
{
try
{
fs.Close();
}
catch{}
}
}
public void End(bool withDispose)
{
try{ns.Close(); }
catch{}
try{_clientSock et.Shutdown(Soc ketShutdown.Bot h);}
catch{}
try{_clientSock et.Close();}
catch{}
try{_serverSock et.Close();}
catch{}
if (withDispose)
this.Dispose();

}
public void Dispose()
{
if (this.listenThr ead != null)
{
try
{
_serverSocket.C lose();
}
catch{}
try
{
this.listenThre ad.Interrupt();
this.listenThre ad.Abort();
}
catch{}
this.listenThre ad = null;
}
}
}
}
Nov 17 '05 #1
1 2641

It turns out that the database I was trying to send had large amounts of
empty bytes in the file. As soon as I zipped the file and sent it,
everything was fine.
Nov 17 '05 #2

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

1
556
by: cmjman | last post by:
I have an issue where networkStream.Write doesn't perform its write downstream from my client program until the network stream is closed. I then see the data that was sent appear on the other side. I am sending a small amound of data and read where data wasn't sent until the buffer reached a larger size. However, there is a TcpClient property call NoDelay that is suppose to eliminate this delay. Here is a snippet of my code below. Can...
1
1809
by: Daniel | last post by:
i would like to konw when the data sent so that i can close the streamwriter and networkstream is there some sort of call backs/events i have to implement for this to work? if so how? can i just open neworkstream and streamwriter, send data and then close it syncrhronously or do i have to implement some callbacks/events to do this like in vb6? TcpClient myclient;
7
2381
by: Dustin B | last post by:
Since this issue encompasses so many things - I have to generally post it I guess. I'm building an application for a Wireless PDA - when it is connected to the Network I tested a TCPListener & TCPClient connection from the Server to the PDA. The connection allows me to Send from the PDA to the Server - but the PDA will not read what the Server writes. I copied the exact information from Microsofts Website on TCP basics - with some...
4
7197
by: 0to60 | last post by:
I have a class that wraps a TcpClient object and manages all the async reading of the socket. It works really nice, and I use it all over the place. But there's this ONE INSTANCE where I create one of these things and it WON'T read data. If I set a breakpoint in my EndRead callback, it never goes off. NOTHING is different from anywhere else I use this class, its just this one place. Now, if I create a second constructor for my class...
2
2399
by: Srinivas R. Loka | last post by:
I have a TCP server to which a number of mobile devices connect. If a device disconnects(mostly no clean close as they usually lose cell coverage or shutdown), and the server then tries to send data using the Networkstream.Write method, its NOT throwing an exception. I am using the TCPClient class. I am able to reproduce this by shutting down my test device(turning off power) and then sending some data. The Write just finishes as if the...
4
1592
by: Kai Thorsrud | last post by:
Hi! How do i check: if "NetworkStream.Null = true then" it says .Null does not supports type Boolean Thanks /Kai
0
1343
by: Al Wilkerson | last post by:
Hey, Has anyone ever got a "Unable to read data from transport connected" message after reading data from a streamreader composed of a networkstream. For example: Server TcpListener tcpServer = new TcpListener(localAddr,port);
7
4264
by: littleIO | last post by:
Hi, I'm stuck on a very simple problem and just cant seem to get around it, little help would be much appreciated. I have a server which listens, receives calls, processes them and sends back the results to clients. The code below makes the client application not to respond. Client can send data but is stuck in the process of waiting information back from the server. Any ideas?
1
4448
by: Almund | last post by:
Hi, I'm trying to implement streaming over http and got stuck with a problem trying to send chunks of data using the .Net NetworkStream object. All works fine as long as I send the entire data in one invocation to the NetworkStream, like: _stream.Write(buffer, 0, buffer.Length) But if i try:
0
8379
marktang
by: marktang | last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However, people are often confused as to whether an ONU can Work As a Router. In this blog post, we’ll explore What is ONU, What Is Router, ONU & Router’s main usage, and What is the difference between ONU and Router. Let’s take a closer look ! Part I. Meaning of...
0
8709
jinu1996
by: jinu1996 | last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven tapestry of website design and digital marketing. It's not merely about having a website; it's about crafting an immersive digital experience that captivates audiences and drives business growth. The Art of Business Website Design Your website is...
1
8494
by: Hystou | last post by:
Overview: Windows 11 and 10 have less user interface control over operating system update behaviour than previous versions of Windows. In Windows 11 and 10, there is no way to turn off the Windows Update option using the Control Panel or Settings app; it automatically checks for updates and installs any it finds, whether you like it or not. For most users, this new feature is actually very convenient. If you want to control the update process,...
0
8596
tracyyun
by: tracyyun | last post by:
Dear forum friends, With the development of smart home technology, a variety of wireless communication protocols have appeared on the market, such as Zigbee, Z-Wave, Wi-Fi, Bluetooth, etc. Each protocol has its own unique characteristics and advantages, but as a user who is planning to build a smart home system, I am a bit confused by the choice of these technologies. I'm particularly interested in Zigbee because I've heard it does some...
0
7309
agi2029
by: agi2029 | last post by:
Let's talk about the concept of autonomous AI software engineers and no-code agents. These AIs are designed to manage the entire lifecycle of a software development project—planning, coding, testing, and deployment—without human intervention. Imagine an AI that can take a project description, break it down, write the code, debug it, and then launch it, all on its own.... Now, this would greatly impact the work of software developers. The idea...
1
6162
isladogs
by: isladogs | last post by:
The next Access Europe User Group meeting will be on Wednesday 1 May 2024 starting at 18:00 UK time (6PM UTC+1) and finishing by 19:30 (7.30PM). In this session, we are pleased to welcome a new presenter, Adolph Dupré who will be discussing some powerful techniques for using class modules. He will explain when you may want to use classes instead of User Defined Types (UDT). For example, to manage the data in unbound forms. Adolph will...
1
2719
by: 6302768590 | last post by:
Hai team i want code for transfer the data from one system to another through IP address by using C# our system has to for every 5mins then we have to update the data what the data is updated we have to send another system
2
1924
muto222
by: muto222 | last post by:
How can i add a mobile payment intergratation into php mysql website.
2
1597
bsmnconsultancy
by: bsmnconsultancy | last post by:
In today's digital era, a well-designed website is crucial for businesses looking to succeed. Whether you're a small business owner or a large corporation in Toronto, having a strong online presence can significantly impact your brand's success. BSMN Consultancy, a leader in Website Development in Toronto offers valuable insights into creating effective websites that not only look great but also perform exceptionally well. In this comprehensive...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.