Tach zusammen,
Ich bin mittlerweile einige zeitlang mit diesem Problem beschäftigt:
Ich will eine Server-Client TCP-Verbindung herstellen. Vorher habe ich beide als VB-Variante gebastelt, lief auch alles Super.
Jetzt will ich mit einem Android-Gerät via Java einen TCP-Client mit meinem Server verbinden lassen.
Das Problem ist folgendes:
Ich starte den Server
Dieser ist empfangsbereit und wartet auf Clientverbindung
Der Client verbindet sich mit dem Server
Der Client schickt im eine Nachricht ("200")
Der Server empfängt sofort die Nachricht ("200")
Der Server sendet Antwort ("300")
Es dauert jetzt 10 Sekunden
Der Client empfängt Nachricht ("300") und Verbindung wird abgebrochen.
Die Verbindung wird bei mir automatisch nach 10 Sekunden unterbrochen,
also empfängt der Client die Nachricht erst beim Abbruch.
Warum dauert es solange zum zurücksenden? Ich habe den gleichen Server auch für meinen TCP Client für Visual Basic programmiert und dort sind keine Probleme. Was mache ich falsch?
Ich lese ja "zeilenweise". Kann das sein, dass ich da irgendwo etwas vergessen habe? Zeilenabschluss beim Server? Dort schreib ich ja nicht zeilenweise.
Hier mal der Code (ein wenig vereinfacht)
Der Servercode, läuft unter Windows 2003 Server
Dim listener As New TcpListener(50000)
listener.Start()
While True
If listener.Pending Then
Dim client As TcpClient = listener.AcceptTcpClient
Dim stream As NetworkStream = client.GetStream
Dim responsestring As String
Dim clientdata As String
Dim sendbytes As [Byte]()
While True
Try
If stream.DataAvailable Then
Dim bytes(client.ReceiveBufferSize) As Byte
stream.Read(bytes, 0, CInt(client.ReceiveBufferSize))
clientdata = Encoding.ASCII.GetString(bytes)
responsestring = "300$"
sendbytes = Encoding.ASCII.GetBytes(responsestring)
stream.Write(sendbytes, 0, sendbytes.Length)
End If
Threading.Thread.Sleep(25)
Catch ex As Exception
fehler = ex.Message
Exit While
End Try
End While
client.Close()
End If
Threading.Thread.Sleep(25)
End While
Hier der Java Code:
Joa, freu mich von euch zu hören
Ich bin mittlerweile einige zeitlang mit diesem Problem beschäftigt:
Ich will eine Server-Client TCP-Verbindung herstellen. Vorher habe ich beide als VB-Variante gebastelt, lief auch alles Super.
Jetzt will ich mit einem Android-Gerät via Java einen TCP-Client mit meinem Server verbinden lassen.
Das Problem ist folgendes:
Ich starte den Server
Dieser ist empfangsbereit und wartet auf Clientverbindung
Der Client verbindet sich mit dem Server
Der Client schickt im eine Nachricht ("200")
Der Server empfängt sofort die Nachricht ("200")
Der Server sendet Antwort ("300")
Es dauert jetzt 10 Sekunden
Der Client empfängt Nachricht ("300") und Verbindung wird abgebrochen.
Die Verbindung wird bei mir automatisch nach 10 Sekunden unterbrochen,
also empfängt der Client die Nachricht erst beim Abbruch.
Warum dauert es solange zum zurücksenden? Ich habe den gleichen Server auch für meinen TCP Client für Visual Basic programmiert und dort sind keine Probleme. Was mache ich falsch?
Ich lese ja "zeilenweise". Kann das sein, dass ich da irgendwo etwas vergessen habe? Zeilenabschluss beim Server? Dort schreib ich ja nicht zeilenweise.
Hier mal der Code (ein wenig vereinfacht)
Der Servercode, läuft unter Windows 2003 Server
Dim listener As New TcpListener(50000)
listener.Start()
While True
If listener.Pending Then
Dim client As TcpClient = listener.AcceptTcpClient
Dim stream As NetworkStream = client.GetStream
Dim responsestring As String
Dim clientdata As String
Dim sendbytes As [Byte]()
While True
Try
If stream.DataAvailable Then
Dim bytes(client.ReceiveBufferSize) As Byte
stream.Read(bytes, 0, CInt(client.ReceiveBufferSize))
clientdata = Encoding.ASCII.GetString(bytes)
responsestring = "300$"
sendbytes = Encoding.ASCII.GetBytes(responsestring)
stream.Write(sendbytes, 0, sendbytes.Length)
End If
Threading.Thread.Sleep(25)
Catch ex As Exception
fehler = ex.Message
Exit While
End Try
End While
client.Close()
End If
Threading.Thread.Sleep(25)
End While
Hier der Java Code:
Java:
try {
clientSocket = new Socket(SERVER, 50000);
DataOutputStream outToServer = new DataOutputStream(clientSocket.getOutputStream());
BufferedReader inFromServer = new BufferedReader(new
InputStreamReader(clientSocket.getInputStream()));
while (true)
{
Send = "200";
outToServer.writeBytes(Send);
while (!inFromServer.ready()) {}
Return = inFromServer.readLine();
}
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Joa, freu mich von euch zu hören