G
Guest
Gast
hallo!
ich habe folgendes problem!
ich habe eine client server anwendung, bei der ich daten vom server anforder und diese verarbeite.
über vpn funktioniert es einwandfrei.
im lan aber sende ich meine anfrage und bekomme entweder sofort oder nach 1-8 sätzen eine zu geringe menge daten zurück.
ich sollte immer 1926 bytes bekommen, doch dann bekomme ich (nach 1-8 sätzen) immer nur 14XX bytes zurück.
hier etwas code
kann mir jemand sagen warum das so ist und wie ich das ändern kann?
(der server sendet auf jeden fall die daten)
danke !!!
jense
ich habe folgendes problem!
ich habe eine client server anwendung, bei der ich daten vom server anforder und diese verarbeite.
über vpn funktioniert es einwandfrei.
im lan aber sende ich meine anfrage und bekomme entweder sofort oder nach 1-8 sätzen eine zu geringe menge daten zurück.
ich sollte immer 1926 bytes bekommen, doch dann bekomme ich (nach 1-8 sätzen) immer nur 14XX bytes zurück.
hier etwas code
Code:
//dataout = dataout ist mein dataoutputstream und in ist mein inputstream
// eine authentisierung auf dem server ist auch schon vollzogen
public void Funktion(short poslen,byte[]Position,Anzeige gui)
{
try {
this.gui = gui;
byte c[] = Position;
short positionlen = poslen;
// (16 byte)
String a = "XXXXXXXXXX";
String b= "0";
String d = "1";
String flags = "0000";
dataout.writeBytes(a);
dataout.writeBytes(b);
dataout.writeBytes(d);
dataout.writeBytes(flags);
//(24 byte)
String server = "XXXXSERVER ";
String filler1 = " ";
short s1= 342;
short s2= 4096; //Max Länge
String filler2 = " ";
dataout.writeBytes(server);
dataout.writeBytes(filler1);
dataout.writeShort(s1);
dataout.writeShort(s2);
dataout.writeBytes(filler2);
//(342 byte)
short ReplyCode = 0;
short s3 = 100;
String AZ = " ";
String AZe = " ";
String filler =" ";
String isA = "0";
dataout.writeShort(ReplyCode);
dataout.writeShort(s3);
dataout.writeBytes(AZ);
dataout.writeBytes(AZe);
dataout.writeBytes(Username);// String 32 byte
dataout.writeBytes(filler);
dataout.writeBytes(isA);
dataout.writeShort(positionlen);
dataout.write(c);
// jetzt daten
dataout.flush();
int len;
boolean ok = false;
byte[] b = new byte[1000000];
while (!ok) {
try {
if ( (len = in.read(b)) == -1) {
break;
}
byte b3 = b[80];
byte b4 = b[81];
short neuesPosLen = (short) ((b3<<8)|b4);
for(int i = 0; i<300;i++)
{
c[i] = b[i+82]; //stand gerade auf 82
}
String flagabfrage = new String(b,12,4);
byte b1 = b[40];
byte b2 = b[41];
short replaycode = (short) ((b1 << 8) | b2);
if(flagabfrage.equals("0000") && replaycode == 0)
{
Controller.einlesen(b,len,gui);
Funktion(neuesPosLen ,c,gui);
break;
}
else{
ok = true;
break;
}
}
catch (InterruptedIOException e) {
//nochmal versuchen
}
}
ok = false;
}
catch (IOException ex) {
System.exit(0);
}
}
kann mir jemand sagen warum das so ist und wie ich das ändern kann?
(der server sendet auf jeden fall die daten)
danke !!!
jense