Johannes Röckert: SocketConnection in J2ME

Beitrag lesen

Hallo,

ich habe zwar mit der J2ME nichts gemacht, aber ich kann in dem Quelltext auch keinen richtigen Sinn erkennen. Du scheinst eine TCP-Verbindung zu einem Mailserver aufzubauen, welcher per SMTP mit dir kommunizieren will. Dann hörst du dem Mailserver so lange zu (und er hat nicht viel zu sagen), bis er sich veräppelt fühlt und die Verbindung schließt (connection timeout). Dann ist bytesRead == 0 und das Programm beendet sich ohne exception. Ich glaube, das Problem ist hier nicht der Aufbau der TCP-Verbindung sondern schlichtergreifend die wechselseitige Kommunikation.

Lies am besten nach, wie SMTP funktioniert. Da es zeilenbasiert ist, musst du auch zeilenweise aus dem Stream lesen können. Hier bietet es sich an, wie folgt vorzugehen:

BufferedReader br = new BufferedReader(new InputStreamReader(sc.openInputStream()));
while (weitere_zeile_erwartet)
{
  nächste_zeile = br.readLine();
}

Du wirst dann sehen, dass der Server nach Senden eines kurzen Begrüßungstextes ("220 mail.gmx.net GMX Mailservices ESMTP {mp002}") nach Befehlen auf dich wartet.

Viel Erfolg,
  Johannes Röckert