10. april 2006 - 02:46
Der er
15 kommentarer
Imports i java?
Hejsa.. Jeg har en fil jeg vil have inkluderet i min applet. Men hvordan gøres dette? filerne ligger i den samme mappe som appleten.. Har prøvet med: import ThreadedEchoServer.*; og import ThreadedEchoServer; Men ved .*; bagved siger den der ingen package er.. Hvad skal jeg gøre?
Annonceindlæg fra Infor
10. april 2006 - 02:51
#1
ingenting klasser i samme package (også når de begge er i default package) behøver ikke at blive importeret
10. april 2006 - 02:52
#2
Så må jeg høre arne.. Hvor kan jeg læse om packages.. gerne på dansk.. Fordi .. jeg vil inkludere min echoserver i min applet, således jeg kan kalde kommandoer frem og tilbage.. Kan du eventuelt foreklage hurtigt hvad package er?
10. april 2006 - 02:56
#3
java package svarer til C# og C++ namespaces package a.b.c; public class D { } er en klasse med det korte navn D og det fulde navn a.b.c.D når noget andet kode skal bruge den klasse kan man skrive a.b.c.D o = new a.b.c.D(); eller man kan bruge: import a.b.c.*; og D o = new D();
10. april 2006 - 02:59
#4
Aha....! Altså nu er de i samme mappe, og har ikke noget "package ..." sat til! Kan du så foreklare lidt om hvordan 2 filer skal hænges sammen? - Kan det ikke gøres uden metoden "package" ? Forstod ikke helt det med packages! Altså, jeg gik i stå med a.b.c - hvor kommer de bogstaver fra?? Hvis jeg nu har i min echoserver -> var ny = new klasse.NewUser("..,..,"); Vil det se rigtigt ud, Arne?
10. april 2006 - 03:14
#5
default package er package med et tomt navn - som jeg startede med at sige samme package => ikke noget behov for import a.b.c er bare ent package navn jeg har valgt lidt uoriginalt i virkelighedens verden hedder de: java.util.regex dk.eksperten.util etc.
10. april 2006 - 03:15
#6
med hensyn til din applet og din server så tror jeg ikke at du er på rette spor
10. april 2006 - 03:24
#7
Har en klasse i min applet som ser således ud: public void newuser(int id, String brugernavn, int xpos, int ypos, String figur) { bufferGfx.drawString(brugernavn, xpos, ypos+70); } Mit spørgsmål er så egenlig.. Hvad skal jeg gøre for at få min "threadedEchoServer" til at kommunikere med appleten? Så er det jo imports og packages, ikke sandt Arne?
10. april 2006 - 04:03
#8
nej det er netværks kommunikation
10. april 2006 - 04:07
#9
Okay. Så er jeg jo på rette spor. Ligenu virker det hvis andre ser appleten, så siger den i min "echoServer" : blablabla:port konnektet til serveren. Men så vil jeg have den til at kommunikere med appleten således, når en bruger åbner appleten skal alle andre på clienten kunne se at brugeren er kommet, også er det her at min public void newuser kommer ind i billedet. Så spørgsmålet lyder: Hvad skal jeg gøre for at få min "threadedEchoServer" til at kommunikere med appleten?
10. april 2006 - 05:40
#10
jeg poster lige et par stykker kode til inspiration
10. april 2006 - 05:40
#11
import java.io.*; import java.net.*; import java.util.*; public class Server { public static void main(String[] args) { try { List lst = new ArrayList(); ServerSocket ss = new ServerSocket(12345); while(true) { Socket s = ss.accept(); ClientHandler cli = new ClientHandler(s, lst); cli.start(); } } catch (IOException e) { e.printStackTrace(); } } } class ClientHandler extends Thread { private Socket s; private BufferedReader br; private PrintWriter pw; private List lst; private String user; public ClientHandler(Socket s, List lst) { try { this.s = s; br = new BufferedReader(new InputStreamReader(s.getInputStream())); pw = new PrintWriter(s.getOutputStream(), true); this.lst = lst; user = "not logged in"; lst.add(this); } catch (IOException e) { e.printStackTrace(); } } public void run() { try { String line; while((line = br.readLine()) != null) { if(line.substring(0,6).equals("LOGIN ")) { user = line.substring(6); System.out.println(user + " login"); } else if(line.substring(0,5).equals("SEND ")) { String msg = line.substring(5); for(int i = 0; i < lst.size(); i++) { ClientHandler cli = (ClientHandler)lst.get(i); if(cli != this) { cli.send(msg); System.out.println(msg + " send to " + cli.user); } } } else { System.out.println("Unknown command : " + line); } } } catch (IOException e) { // nothing } finally { lst.remove(this); } } public void send(String msg) { pw.println(msg); } }
10. april 2006 - 05:40
#12
import java.io.*; import java.net.*; public class Client { public static void main(String[] args) { try { Socket s = new Socket("localhost", 12345); PrintWriter netpw = new PrintWriter(s.getOutputStream(), true); BufferedReader netbr = new BufferedReader(new InputStreamReader(s.getInputStream())); PrintWriter conpw = new PrintWriter(System.out, true); BufferedReader conbr = new BufferedReader(new InputStreamReader(System.in)); ServerHandler srv = new ServerHandler(conpw, netbr); srv.start(); netpw.println("LOGIN " + args[0]); String line; System.out.print("Indtast text (afslut med CTRL/Z): "); while((line = conbr.readLine()) != null) { netpw.println("SEND " + line); System.out.print("Indtast text (afslut med CTRL/Z): "); } netbr.close(); netpw.close(); s.close(); srv.interrupt(); } catch (UnknownHostException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } } class ServerHandler extends Thread { private BufferedReader br; private PrintWriter pw; public ServerHandler(PrintWriter pw, BufferedReader br) { this.pw = pw; this.br = br; } public void run() { try { String line; while((line = br.readLine()) != null) { pw.println(line); } } catch (IOException e) { // nothing } } }
10. april 2006 - 14:03
#13
Arne, det er ikke noget med det at gøre.. Har jo en fil som står og lytter på en port og venter på kommando som den acceptere. Og i min applet har jeg også således den sender til port 9999. Problemet er bare de skal importeres så de kan arbejde sammen..
10. april 2006 - 14:41
#14
nej medmindre du serialiserer objekter (ObjectOutputStream og ObjectInputStream) saa vil du med en socket loesning ikke skulle dele kode mellem client og server
10. april 2006 - 15:06
#15
Det skal jeg da , når jeg skal kalde en klasse ved output "newuser" ??
Kurser inden for grundlæggende programmering