Problemer med socket
Jeg er ved at lave en J2ME Midlet som skal oprette en netværksforbindelse til en server via en seperart tråd, som skal stå og modtage data, analysere det modtagne og evt sende et svar tilbage.Mit problem er som følgende; inden jeg starter en uendelig løkke som bare skal stå og modtage sender jeg en besked til serveren for at begynde log-ind proceduren. Jeg modtager svaret fra serveren og sender en ny besked til denne, men denne gang modtager jeg ikke mere.
Jeg har prøvet at oprette forbindelse med PUTTY og sendt de samme beskeder til serveren, her modtog jeg svar efter begge beskeder.
Min run()-funktion ser ud som følgende:
public void run()
{
try {
sc = (SocketConnection) Connector.open("socket://"+parent.txtHost.getString()+":"+parent.txtPort.getString());
is = sc.openInputStream();
os = sc.openOutputStream();
sender = new Sender(os, this);
sender.send("VER "+this.getTrID()+" MSNP8 CVR0\r\n");
while (true) {
StringBuffer s = new StringBuffer();
String str = new String();
int c = 0;
System.out.println("Client: While Loop :\n");
while (((c = is.read()) != '\n') && (stop != true)) {
if (c != -1) {
s.append((char) c);
System.out.println("Client: (char) c: "+s.toString()+"\n");
}
}
System.out.println("Client: Efter While Loop \n");
if (stop == true) {
System.out.println("Client: break \n");
break;
}
str = s.toString();
if (str.length() > 0)
{
String CMD = new String();
int i;
i = str.indexOf(" ");
if (i == -1) {
i = str.length()+1;
}
CMD = str.substring(0, i);
CMD = CMD.toUpperCase();
CMD = CMD.trim();
System.out.println("CMD: "+CMD+"\n");
if (CMD.compareTo("VER") == 0) {
String s2 = new String("CVR "+this.getTrID()+" 0x0409 win 4.10 i386 MSNMSGR 6.1.0211 MSMSGS sbjensendk@hotmail.com\r\n");
System.out.println("Client: "+s2);
sender.send(s2);
} else
if ((CMD.compareTo("CVR") == 0) || (CMD.compareTo("CVQ") == 0)) {
System.out.println("Client: CVR");
sender.send("USR "+this.getTrID()+" TWN I "+parent.txtEmail.getString());
}
CMD = null;
}
parent.FormConnecting.append(str);
System.out.println("Received: "+str);
str = null;
s = null;
}
stop();
} catch (ConnectionNotFoundException cnfe) {
parent.FormConnecting.append("Unable to establish connection.");
System.out.println("Unable to establish - Client Thread...");
} catch (IOException ioe) {
if (!stop) {
ioe.printStackTrace();
System.out.println("IOException - Client Thread...");
}
} catch (Exception e) {
e.printStackTrace();
System.out.println("Exception - Client Thread...");
}
System.out.println("Closing Client thread...");
}
På forhånd tak.
Simon Jensen