Avatar billede razersedge Nybegynder
29. maj 2004 - 23:12 Der er 1 kommentar og
1 løsning

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
Avatar billede razersedge Nybegynder
30. maj 2004 - 02:08 #1
Fik selv løst mit problem, viste sig at jeg vist sendte to gange "\r\n" til sidst, det kunne den åbenbart ikke godtage.
Avatar billede razersedge Nybegynder
30. maj 2004 - 02:08 #2
svar
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester