Avatar billede anders8271 Nybegynder
08. april 2006 - 21:06 Der er 15 kommentarer og
1 løsning

Hjælp til sockets

hej eksperter.
jeg har hentet en "simpleServer" på nettet som lytter på en port.

jeg vil gerne have den til at sige hvis indgående data er "user,anders,23,21,normal.gif" fx så skal den kalde funktionen "newUser" i min applet.

Men hvordan gøres dette når jeg kalder min server via cmd

cmd:
java -cp . simpleServer

og det andet ligger i en applet - så har de intet til fælles jo?

hvordan kan jeg så få den til at kalde "newuser" som er en funktion i min java applet?

Når jeg tænder serveren som lytter, også går ind i min applet siger den "connection lost" lige når java appleten er startet..

Her er min kode:

import java.io.*;
import java.net.*;


public class simpleServer
{
public static void main(String args[])
{
// Message terminator
char EOF = (char)0x00;

try
{
// create a serverSocket connection on port 9999
ServerSocket s = new ServerSocket(9999);

System.out.println("server startet..");
// wait for incoming connections
Socket incoming = s.accept();

BufferedReader data_in = new BufferedReader(
new InputStreamReader(incoming.getInputStream()));
PrintWriter data_out = new PrintWriter(incoming.getOutputStream());

data_out.println("Welcome! type EXIT to quit." + EOF);
data_out.flush();

boolean quit = false;

// Waits for the EXIT command
while (!quit)
{
String msg = data_in.readLine();

if (msg == null) quit = true;

if (!msg.trim().equals("EXIT"))
{
data_out.println("You sayed: "+msg.trim()+""+EOF);
data_out.flush();
}
else
{
quit = true;
}
}
}
catch (Exception e)
{
System.out.println("Connection lost");
}
}
}
Avatar billede anders8271 Nybegynder
08. april 2006 - 21:25 #1
problemet er den siger connection lost ligeså snart jeg ser min applet..
Avatar billede arne_v Ekspert
08. april 2006 - 23:50 #2
catch (Exception e)
{
  System.out.println("Connection lost");
  System.out.println(e.getMessage());
}

så kan du se hvad der går galt !
Avatar billede anders8271 Nybegynder
08. april 2006 - 23:58 #3
Så udskriver den "Null" - Hvad skyldes det?
Avatar billede arne_v Ekspert
09. april 2006 - 00:11 #4
hvis msg er null så dør msg.trim()
Avatar billede anders8271 Nybegynder
09. april 2006 - 00:12 #5
Men arne, som jeg skrev i spørgsmålet..

Hvordan kan den vide i min "simpleServer" at den skal skrive gå til en "public void newuser(paramenter)" i min applet?
Avatar billede arne_v Ekspert
09. april 2006 - 00:14 #6
jeg er ikke helt sikker på at jeg forstår hvad du vil

din server kan skrive noget til socket som applet så kan læse og lave en if
sætning som kalder en metode med nogle argumenter hentet udfra det læste
Avatar billede arne_v Ekspert
09. april 2006 - 00:15 #7
det kræver lidt kode
Avatar billede anders8271 Nybegynder
09. april 2006 - 00:27 #8
Jamen de 2 filer har intet til fælles..

Den eneste befinder sig i C:\server\simpleServer.class

og den anden befinder sig i min www-mappe som applet..

Og i min applet er der en "funktion" som fortæller en ny bruger er logget ind.
Men hvordan kan simpleServer vide den skal fange den funktion uden de har noget til fælles?
Avatar billede arne_v Ekspert
09. april 2006 - 00:28 #9
sidste afsnit i 00:14:53
Avatar billede anders8271 Nybegynder
09. april 2006 - 00:47 #10
I min applet har jeg:

  public void send(String data) {
          try {

                Socket socket = new Socket("localhost", 9999);
                BufferedOutputStream output = new BufferedOutputStream(socket.getOutputStream());
                output.write((data).getBytes());
                output.flush();

            }catch (IOException ioe){
                ioe.printStackTrace();
            }
        }
Avatar billede anders8271 Nybegynder
09. april 2006 - 00:48 #11
hvor jeg så laver en send til simpleserver ved kig ved applten..

hvordan skal koden til simpleserver se ud, hvis den siger output er user,noget,noget,noget,noget

?
Avatar billede anders8271 Nybegynder
09. april 2006 - 01:10 #12
Har dette ligenu, men den siger jo bare den ikke kan finde den klasse.. Hvad gør jeg så?

Så skal jeg jo til at import osv eller hvad?


import java.io.*;
import java.net.*;


public class simpleServer
{
public static void main(String args[])
{
// Message terminator
char EOF = (char)0x00;

try
{
// create a serverSocket connection on port 9999
ServerSocket s = new ServerSocket(9999);

System.out.println("startet..");
// wait for incoming connections
Socket incoming = s.accept();

BufferedReader data_in = new BufferedReader(
new InputStreamReader(incoming.getInputStream()));
PrintWriter data_out = new PrintWriter(incoming.getOutputStream());

data_out.println("Welcome! type EXIT to quit." + EOF);
data_out.flush();

boolean quit = false;

// Waits for the EXIT command
while (!quit)
{
String msg = data_in.readLine();

String[] str = msg.split(",");
   
    String user = str[0];
    String id = str[1];
    String xPos = str[2];
    String yPos = str[3];
    String graphic = str[4];
   
    /*herefter kalder du din newUser metode hvis det er nødvendigt kan du lave de nødvendige parametre om til int
    på denne måde:
    int intId = Integer.parseInt(id);
    */
   
    newUser(user, id, xPos, yPos, graphic);
   
}
}
catch (Exception e)
{
  System.out.println("Connection lost");
  System.out.println(e.getMessage());
}
}
}
Avatar billede anders8271 Nybegynder
09. april 2006 - 02:09 #13
Arne - vil du ikke nok hjælpe?
Avatar billede arne_v Ekspert
09. april 2006 - 03:00 #14
du har din server og din client
client er en applet
der er en socket connection mellem dem
server koden skriver noget til socket
client koden læser fra socket
efter at have læst tester client koden på hvad det er
hvis der skal oprettes en ny bruger så kalder client koden newUser
Avatar billede arne_v Ekspert
10. april 2006 - 05:41 #15
Avatar billede anders8271 Nybegynder
11. april 2006 - 02:08 #16
ja
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