Toon posts:

[JAVA] class werkt niet op elke pc

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb niet zoveel kaas gegeten van java. Nou heb ik van sun het 1 en ander gedownload en onderstaand script gemaakt. De class wordt in een html pagina geladen en wacht dan op poort 1025 voor een socket connectie (een flash movie indezelfde html pagina maakt de connectie. Als hij een connectie heeft gaat de java class een 2de connectie opzetten met een andere pc op internet (visual basic applicatie) en geeft vervolgens alles wat het vb programma verstuurd door aan de flash en anderzom. Het werkt perfect!! MAAR........ Alleen op de computer waarop ik de class gemaakt heb. Als ik het op een andere pc open dan lijkt de class goed te werken, maar hij doet het niet. Kan het komen doordat ik java code heb gebruikt die niet door elke explorer wordt herkend? Ik heb dus blijkbaar een bestandje van sun op mijn pc staan die er voor zorgt dat het bij mij wel werkt. Kan iemand aan de hand van onderstaande code mij vertellen waar het hem in zit en wat ik zou moeten verranderen?

Bedankt.

import java.applet.*;
import java.awt.*;
import java.io.*;
import java.net.*;

class KoppelThread extends Thread
{
private BufferedReader i;
private PrintWriter o;

public KoppelThread(PrintWriter out, BufferedReader in)
{
i=in;
o=out;
start();
}

public void run()
{
while(true)
{
try{
String vm = i.readLine();
if(vm.equals("CLOSE")) break;
if(vm.length()>0) o.println(vm);
} catch(IOException e) {}
}


}
}

public class code extends Applet
{
public static final int PORT = 1025;
public static final int PORTVB = 1;
public static void main() throws IOException
{

InetAddress adres=InetAddress.getByName("ip-nummer");
ServerSocket s=new ServerSocket(PORT);
int t;

try {
System.out.println("Wacht op localmovie..\n");
Socket socket = s.accept(); // Wacht op connectie
System.out.println("Wacht op connectie met bas..\n");
Socket socket2=new Socket(adres,PORTVB); // Connected? Maak connectie met bas
System.out.println("I.O....\n");
try {
BufferedReader in= new BufferedReader(
new InputStreamReader(
socket.getInputStream()));

PrintWriter out =
new PrintWriter(
new BufferedWriter(
new OutputStreamWriter(
socket.getOutputStream())),true);

BufferedReader in2= new BufferedReader(
new InputStreamReader(
socket2.getInputStream()));

PrintWriter out2 =
new PrintWriter(new BufferedWriter(
new OutputStreamWriter(socket2.getOutputStream())),true);
new KoppelThread(out2,in);
new KoppelThread(out,in2);
while(true);
} finally {
socket.close();
}
} finally {
s.close();
}
}

public void paint(Graphics g)
{
g.drawString(":-)",10,20);
try{

main();
} catch(IOException e) {}
}
}

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

Je moet er rekening mee houden dat een applet alleen spul mag ophalen bij de server waar hij ook vandaan komt.

Verwijderd

Topicstarter
Wat bedoel je daar precies mee? Op de pc waar ik de class op heb gemaakt werkte het. Hij connecte met de flash movie die in dezelfde pagina werd geladen. En op zijn buurt connectie de java class met een totaal andere pc op het netwerk. Dat is in ieder geval zeker. Alleen datzelfde kunstje (dus html openen met class en flash) op iemand anders zijn pc werkt niet..

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 28-08 12:00

Janoz

Moderator Devschuur®

!litemod

Waneer een applet via internet wordt opgehaald heeft het een enorme berg beperkingen. Het zogenaamde sandbox principe. Sowieso mag het niet een poort openzetten om naar te luisteren! Dat gaat dus al niet lukken. Daarnaast mag het alleen verbinding maken met de server waarvandaan het applet opgehaald is. Je vb-app moet dus op dezelfde server draaien als de webserver.

Verder lijkt het me ook sterk dat flash dit ineens wel kan. Volgens mij heeft deze namelijk dezelfde beperkingen.

Het is trouwens een goed iets dat dit mogenlijk is!! Denk er maar eens ff over na wat er allemaal mogelijk zou zijn als het wel zou kunnen.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Verwijderd

Topicstarter
Ik weet dat flash deze beperkingen heeft, vandaar dat ik hoopte het te kunnen omzeilen met java. Maar blijkbaar werkt dat hetzelfde. Hoe is het dan te verklaren dat die class op de pc waar ik die gemaakt heb wel een connectie kon openen met een andere pc waar mijn vb applicatie op draaide? Daar kwam die class immers niet vandaan. Mijn vb applicatie op de server draaien is geen oplossing. Ik wil immers dat die op iemand zijn pc draait en dat andere mensen die een flash chatschermpje openen met die vb applicatie kunnen communiceren. Kan ik anders iets maken met java dat op de server draait en dat die beide programma's met elkaar connect?

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 28-08 12:00

Janoz

Moderator Devschuur®

!litemod

Dat is normalitair the way to go eigenlijk. Andere mogenlijkheid is om een miniwebservertje in te bouwen in die vb app zodat mensen daar het flash filmpje vandaan kunnen halen.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Verwijderd

Topicstarter
Ik moet dus iets in java maken dat op de server komt waarvandaan de flashmovie wordt gedownload. Dat kan ik in vb maken, maar dat heeft als nadeel dat het alleen op windows servers draait. Als ik iets in java maak werkt dat dan op elke server? Kan ik dan dat java gedeelte samen met de flash movie op elke willekeurige server zetten? En dan moet de vb applicatie zeker ook connecte met java. Of is het dan wel mogelijk dat als het java gedeelte op de server een connectie requets van het flash chatscherm krijgt, hij een socket connectie opent met het vb programma bij iemand op zijn / haar computer?
Pagina: 1