Hi guys I have read the answer to similar question but none of this could solve the problem im facing .
Step 1.) I make a ServerSocket (localhost port8675) , I accept the socket and get its corresponding OutputStream (I use async task for this)
step2.) I get chunks of data as byte[] (12kb).
step 3.) I write this 12kb byte[] on the outputstream.
The first chunk write is success but when i try and write the next chunk i face this error.
03-27 21:13:00.275 W/System.err(28866): java.net.SocketException: sendto failed: ECONNRESET (Connection reset by peer)
03-27 21:13:00.275 W/System.err(28866): at libcore.io.IoBridge.maybeThrowAfterSendto(IoBridge.java:506)
03-27 21:13:00.275 W/System.err(28866): at libcore.io.IoBridge.sendto(IoBridge.java:475)
03-27 21:13:00.275 W/System.err(28866): at java.net.PlainSocketImpl.write(PlainSocketImpl.java:507)
03-27 21:13:00.275 W/System.err(28866): at java.net.PlainSocketImpl.access$100(PlainSocketImpl.java:46)
03-27 21:13:00.275 W/System.err(28866): at java.net.PlainSocketImpl$PlainSocketOutputStream.write(PlainSocketImpl.java:269)
These are the code blocks Async task to make server socket and get output stream
        protected Void doInBackground(Void... arg0) {
        // TODO Auto-generated method stub
        try {
            providerSocket = new ServerSocket(8765);
            Log.d(TAG,"  ServerSocket made ");
        } catch (IOException e) {
            // TODO Auto-generated catch block
            Log.e(TAG,"ServerSocket failed ");
            e.printStackTrace();
        }
        //Wait for connection
        Log.d(TAG,"Waiting for connection");
        try {
            connection = providerSocket.accept();
            Log.d(TAG,"Connection received from " + connection.getInetAddress().getHostName());
        } catch (IOException e) {
            // TODO Auto-generated catch block
            Log.e(TAG,"ServerSocket accept failed ");
            e.printStackTrace();
        }
        try {
            dataOutputStream = connection.getOutputStream();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        try {
            dataOutputStream.flush();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return null;
    }
Now to write the byte[] chunks i get
  Log.i(TAG, "incoming  data of length ="+data.length);
    new writetask().execute(data); 
protected Void doInBackground(byte[]... temp) {
    // TODO Auto-generated method stub
    if(temp[0] != null && (temp[0].length > 0 )){
        Log.d(TAG,"doInBackground of  server  socket start queued data len"+temp[0].length);
        mBuffer =   new byte[temp[0].length];
        mBuffer = temp[0];
       }                
       else 
       { Log.e(TAG,"empty buffer  enqued :(");
        return null ;
       }
        try {
            if(mBuffer != null)
            {
                Log.d(TAG, " buffer size = "+temp[0].length);
                Log.d(TAG," write buffer to socket");
                dataOutputStream.write(mBuffer,0,mBuffer.length);} // LINE NO 360.
            else
                Log.e(TAG, "no buffers  are recieved yet");
            mBuffer = null;
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        try {
            Log.d(TAG,"enqeueBuffer flush the socket");
            dataOutputStream.flush();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        Log.d(TAG,"doInBackground run end ");
Few points I have added only relevant code , The dataOutputStream is a classmember and socket accepting and outputstream writing are done in two seprate Async task.
these are the logs for the 1st data write which seems successful
03-27 21:13:00.150 : incoming data of length =12288
03-27 21:13:00.155 : doInBackground of server socket start
03-27 21:13:00.155 doInBackground of server socket start queued data len12288
03-27 21:13:00.155 buffer size = 12288
03-27 21:13:00.155 write buffer to socket 03-27 21:13:00.160 flush the socket
03-27 21:13:00.160 doInBackground run end
Now the second data write logs are as these
03-27 21:13:00.275 incoming data of length =12288
03-27 21:13:00.275 doInBackground of server socket start
03-27 21:13:00.275 doInBackground of server socket start queued data len12288
03-27 21:13:00.275 buffer size = 12288
03-27 21:13:00.275 write buffer to socket
03-27 21:13:00.275 W/System.err(28866): java.net.SocketException: sendto failed: ECONNRESET (Connection reset by peer)
03-27 21:13:00.275 W/System.err(28866): at $writetask.doInBackground(SampleServiceImpl.java:360) // fails at write
what is the reason of this happening is it due to output stream needing to write chunks of data at fast interval (i doubt it as i have tested much faster write rate at local sockets.)
Kindly advise. thanks