N
narox
Neues Mitglied
- 1
Hey Leute,
also ich habe ein Problem das ich kein Bild(2MB) an den Server schicken kann. Strings usw. kann ich problemlos senden, da diese ja sehr kleine bytes sind.
Mein Lösungsweg wäre das Bild in 1024 Byte-Packete zu schicken, aber irgendwie funktioniert das nicht ganz.
Vielleicht könnt ihr mir helfen
mfg Narox
Meine SendMethode:
Mein VB-Server:
also ich habe ein Problem das ich kein Bild(2MB) an den Server schicken kann. Strings usw. kann ich problemlos senden, da diese ja sehr kleine bytes sind.
Mein Lösungsweg wäre das Bild in 1024 Byte-Packete zu schicken, aber irgendwie funktioniert das nicht ganz.
Vielleicht könnt ihr mir helfen
mfg Narox
Meine SendMethode:
Code:
public void sendData(byte[] data){
Socket socket = null;
DataOutputStream out = null;
DataInputStream in = null;
try {
socket = new Socket("192.168.20.105", 8888);
if(socket.isConnected()){
out = new DataOutputStream(socket.getOutputStream());
in = new DataInputStream(socket.getInputStream());
ArrayList<Byte> imgdata=new ArrayList<Byte>();
//Die Daten in eine ArrayList speichern,weil diese dynamsich ist
for(int i=0;i<data.length;i++){
imgdata.add(data[i]);
}
//Die Pakete aufteilen
int nOfPackets=imgdata.size()/1024;
if(imgdata.size()%1024!=0){
nOfPackets++;
}
//Die Pakete senden
byte[] buffer;
for(int i=0;i<nOfPackets;i++){
//Falls die anzahl der bytes kleine ist als die Paketgröße dann, die Paketgröße anpassen
if(imgdata.size()>1024){
buffer=new byte[1024];
}else{
buffer=new byte[imgdata.size()];
}
//Die bytes in den buffer schreiben
for(int pos=0;pos<1024;pos++){
buffer[pos]=imgdata.get(0);
imgdata.remove(0);
}
//an den Server schicken
out.write(buffer, 0, buffer.length);
}
/*userdata=in.readLine();
if(userdata.equals("FAILED")){
showToast("Identification failed!");
}else{
Intent pinIntent = new Intent(this, PinSend.class);
pinIntent.putExtra("userdata", userdata);
pinIntent.putExtra("amount", getIntent().getExtras().getString("amount"));
startActivity(pinIntent);
}*/
}
} catch (UnknownHostException e) {
showToast("Sending failed!");
e.printStackTrace();
} catch (IOException e) {
showToast("Sending failed!");
e.printStackTrace();
}
finally{
try {
if(socket!=null){
socket.close();
}
if(out!=null){
out.close();
}
if(in!=null){
in.close();
}
}catch (IOException e) {
e.printStackTrace();
}
}
}
Code:
Imports System.Net.Sockets
Imports System.IO
Imports System.Net
Imports System.Drawing
Imports System.Text
Module Module1
Private listener As TcpListener
Private client As New TcpClient
Private clients As New List(Of NetworkStream)
Sub Main()
Try
listener = New TcpListener(IPAddress.Any, 8888)
listener.Start()
Catch ex As Exception
Console.WriteLine(ex.Message)
End Try
Console.WriteLine("Server gestartet")
While True
client = listener.AcceptTcpClient()
If (client.Connected) Then
Dim stream As NetworkStream = client.GetStream()
Console.WriteLine("Client angemeldet")
Dim t As New Threading.Thread(AddressOf ClientListener)
t.Start(stream)
End If
End While
End Sub
Private Sub ClientListener(ByVal stream As NetworkStream)
Try
Dim recData(1024) As Byte
Dim recBytes As Integer
Dim totalrecbytes As Integer = 0
Dim memStream As MemoryStream = New MemoryStream()
While ((recBytes = stream.Read(recData, 0, recData.Length)) > 0)
memStream.Write(recData, 0, recData.Length)
totalrecbytes += recBytes
End While
Dim bitImage As Bitmap = New Bitmap(System.Drawing.Image.FromStream(memStream))
bitImage.Save("C:\test.bmp")
Dim sendBytes As [Byte]() = Encoding.ASCII.GetBytes("OK")
'stream.Write(sendBytes, 0, sendBytes.Length)
Catch ex As Exception
Finally
stream.Close()
client.Close()
clients.Remove(stream)
End Try
End Sub
End Module
Zuletzt bearbeitet: