Avatar billede casualty Nybegynder
29. december 2002 - 21:44 Der er 10 kommentarer og
2 løsninger

Socket server/Client

Når man etablerer en socketforbindelse imellem en client og en server, Kan man så sende data begge veje eller er det kun fra clienten til serveren??

Mvh Casualty
Avatar billede scoty Nybegynder
29. december 2002 - 21:45 #1
Det kan du sende begge veje.. Hvilken type socket overvejer du at bruge?
Avatar billede arne_v Ekspert
29. december 2002 - 21:49 #2
Begge veje.
Avatar billede arne_v Ekspert
29. december 2002 - 21:50 #3
scoty> Man må vel formode, at det er et ganske almindeligt Socket både
på client og server.
Avatar billede arne_v Ekspert
29. december 2002 - 21:52 #4
casualty> Det er anbefalelsesværdigt at definere protokollen
mellem client og server helt klart, så man ikke risikerer at de
venter på hinanden.

Simpleste model er: client skriver, server læser, server skriver, client læser.
Avatar billede casualty Nybegynder
29. december 2002 - 21:52 #5
Min server:

public void strtSrv()
  {
    try
    {
      server = new ServerSocket(4444);
    }
    catch (IOException e)
    {
      System.out.println(e);
      System.exit(0);
    }
    while(true)
    {
      ClientWorker w;
      try
      {
        w = new ClientWorker(server.accept(),frame,this,toggle);//returnerer en streng med useroplysninger...
        Thread t = new Thread(w);
        t.start();
      }
      catch (IOException e)
      {
        System.out.println(e);
      }
    }
  }



Min client:

public boolean connect()
  {
    try
    {
      soc = new Socket("10.0.1.97",4444);
      return true;
    }
    catch(Exception e)
    {
      System.out.println(e);
      error = e.toString();
      return false;
    }
  }
Avatar billede casualty Nybegynder
29. december 2002 - 21:54 #6
Og så sender jeg et object til serveren:

public void run()
  {
    for(;;)
    {
      try
      {
        ObjectInputStream ois = new ObjectInputStream(client1.getInputStream());
        msg = (String[])ois.readObject();
      }
      catch (Exception e)
      {
        System.out.println(""+e);
      }
    }
  }
Avatar billede arne_v Ekspert
29. december 2002 - 21:54 #7
Din klient har en Socket og din server tråd har en Socket
og de burde kunne kommunikere på livet løs.
Avatar billede casualty Nybegynder
29. december 2002 - 21:57 #8
Oki...Jeg prøver at kigge på det...
Tak for hjælpen...
Avatar billede arne_v Ekspert
29. december 2002 - 21:57 #9
Du kan godt:

public void run()
  {
    for(;;)
    {
      try
      {
        ObjectInputStream ois = new ObjectInputStream(client1.getInputStream());
        msg = (String[])ois.readObject();
        ObjectOutputStream oos = new ObjectOutputStream(client1.getOutputStream());
        oos.writeObject("message received");
      }
      catch (Exception e)
      {
        System.out.println(""+e);
      }
    }
  }
Avatar billede arne_v Ekspert
29. december 2002 - 21:58 #10
Det burde være uproblematisk. Eneste potentielle risiko er, hvis
serveren venter på noget fra klienten og klienten venter på noget fra
serveren (jævnfør tidligere kommentar).
Avatar billede casualty Nybegynder
30. december 2002 - 21:37 #11
Tak for hjælpen ;-)

Mvh Casualty
Avatar billede casualty Nybegynder
30. december 2002 - 21:40 #12
Kan jeg så bare skrive til den med:

oos.writeObject(msg);

??
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