How receive bitmap's continuously from android on C# Socket?

  • Thread starter Thread starter FLASHCODER
  • Start date Start date
F

FLASHCODER

Guest
I'm working in a remote administration tool to my own use and the project is stopped because a error on receiver function on Server side that is this:

Arithmetic operation resulted in an overflow. (Adding integers)

in this line:

var imageData = new byte[length];

1350729.png

void server_Received(Listener l, Info i, string received) {

string[] cmd = received.Split('|');

switch (cmd[1])
{

case "PRINT":

//MessageBox.Show("print");

Thread threadPrint;

threadPrint = new Thread(() =>
{
var lengthData = new byte[4];
var lengthBytesRead = 0;

while (lengthBytesRead < lengthData.Length)
{
var read = i.sock.Receive(lengthData, lengthBytesRead, lengthData.Length - lengthBytesRead, SocketFlags.None);
if (read == 0) return;
lengthBytesRead += read;
}
var length = BitConverter.ToInt32(lengthData, 0);
var imageData = new byte[length];
var imageBytesRead = 0;

while (imageBytesRead < imageData.Length)
{
var read = i.sock.Receive(imageData, imageBytesRead, imageData.Length - imageBytesRead, SocketFlags.None);
if (read == 0) return;
imageBytesRead += read;
}

using (var stream = new MemoryStream(imageData))
{
var bitmap = new Bitmap(stream);
Invoke(new ImageCompleteDelegate(ImageComplete), new object[] { bitmap });
}

});

threadPrint.Start();

break;
}
}


the code to receiver i taked from this reference (see Client code) and was adapted to my need like you can see above.

Here is how i'm sending the bitmap on android (Java):

try {
dos = new DataOutputStream(SocketBackgroundService.xclientSocket.getOutputStream());
PrintWriter out = new PrintWriter(
new BufferedWriter(
new OutputStreamWriter(dos)
)
);
out.println("|PRINT|");
out.flush();
dos.writeInt(array.length);
dos.write(array, 0, array.length);
dos.flush();
} catch (IOException e) {
e.printStackTrace();
}


Then, i want know what can be done to solve this trouble?

Thanks in advance.

Continue reading...
 
Back
Top