Guten Morgen,
ich bin z.Z. an einem SMTP client zugange (auch dem Server)
nun wollt ich mein prog mal eben warten lassen un lauschen was der server mir so zurück gibt. problem dabei is, die readline methode wird einmal ausgeführt und mein prog läuft irgendwo weiter ohne das ich wüsste wo...
mal eben den code:
da des auf NL is hab ich mal eben nen deutschn kommentar mit einigen ausrufezeichen dazu gemacht, wo ich den fehler vermute bzw wo er auftritt
schonmal danke für die hilfe
ich bin z.Z. an einem SMTP client zugange (auch dem Server)
nun wollt ich mein prog mal eben warten lassen un lauschen was der server mir so zurück gibt. problem dabei is, die readline methode wird einmal ausgeführt und mein prog läuft irgendwo weiter ohne das ich wüsste wo...
mal eben den code:
Java:
package IN22;
import java.io.*;
import java.net.*;
import java.util.ArrayList;
public class SmtpClient
{
private static BufferedReader is;
private static DataOutputStream os;
private static Socket smtpSocket;
private static ArrayList<String> commands;
public static void main(String[] args)
{
Thread t1 = new Thread(new SmtpServer());
t1.start();
commands = new ArrayList<String>();
commands.add("EHLO");
commands.add("MAIL From: [email]no.mam@gmail.com[/email]");
commands.add("RCPT To: [email]no.mam@gmail.com[/email]");
commands.add("DATA");
commands.add("From: [email]no.mam@gmail.com[/email]");
commands.add("Hello Google!");
commands.add("\n.");
commands.add("QUIT");
smtpSocket = null;
os = null;
is = null;
// Port 25 is voor SMTP
try
{
smtpSocket = new Socket("localhost", 25);
os = new DataOutputStream(smtpSocket.getOutputStream());
is = new BufferedReader(new InputStreamReader(smtpSocket.getInputStream()));
}
catch (UnknownHostException e)
{
System.err.println("Don't know about host: hostname");
}
catch (IOException e)
{
System.err.println("Couldn't get I/O for the connection to: hostname");
}
// Als alles goed zit sturen we een bericht
if (smtpSocket != null && os != null && is != null)
{
try
{
//iedere bericht in de arraylist wordt verstuurd
for (String st : commands)
{
os.writeBytes("" + st + "\n");
while (!waitForResponse())
{
try
{
Thread.sleep(1000);
os.writeBytes("" + st + "\n");
}
catch (InterruptedException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
// en nu sluiten we alle verbindingen
os.close();
is.close();
smtpSocket.close();
}
catch (UnknownHostException e)
{
System.err.println("Onbekende Host" + e);
}
catch (IOException e)
{
System.err.println("IOException: " + e);
}
}
}
@SuppressWarnings("deprecation")
public static boolean waitForResponse() throws IOException
{
boolean ret = false;
String input = null;
while (input == null)
{
input = is.readLine(); //hier Gibts probleme !!!!!!!!!!!!!!!!!!!!
}
System.out.println(input);
int code = Integer.parseInt(input);
switch (code)
{
case 250:
{
ret = true;
break;
}
case 354:
{
ret = true;
break;
}
case 221:
{
ret = true;
break;
}
default:
{
ret = false;
break;
}
}
return ret;
}
}
schonmal danke für die hilfe
Zuletzt bearbeitet von einem Moderator: