Avatar billede yezbarh Nybegynder
02. november 2005 - 22:50 Der er 19 kommentarer og
1 løsning

Hurtigt socket spørgsmål i java.

Hvorfor udskriver den "null" ? også selvom jeg tager en anden host osv.



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

public class program extends Applet
{
  int ialt;
  boolean slut;
  String nyUd,nyInd,tekst,data,klient,ind,ud;
public  void init()
{
try {
Socket klient = new Socket("www.google.dk",80);
OutputStream ud = klient.getOutputStream();
InputStream ind = klient.getInputStream();
PrintWriter nyUd = new PrintWriter(ud);
BufferedReader nyInd = new BufferedReader(new InputStreamReader(ind));

nyUd.println("GET /index.php HTTP/0.9");
nyUd.println("Host: www.google.dk");
nyUd.println();
nyUd.flush();
data = nyInd.readLine();
System.out.println(data);
  slut=false;
  tekst = getParameter("tekst");
  ialt = tekst.length();
}catch (Exception e){}}
public void start()
{
System.out.println("Programmet startes");
}
public void vent()
{
  try {
     
Thread.sleep(2000);
}catch(Exception e){}}

public void slut()
{
  vent();
  slut=true;
  System.out.println("Programmet sluttes!");
  repaint();
}

public void paint(Graphics g)
{
start();
g.drawString(".. "+data+"..",100,100);
vent();
slut();
}}
Avatar billede pidgeot Nybegynder
02. november 2005 - 22:55 #1
Problemet er vel at serveren ikke forstår en HTTP 0.9 request. Brug 1.0 i stedet.
Avatar billede pidgeot Nybegynder
02. november 2005 - 22:56 #2
I øvrigt - hvis du skal have fat i index-siden, skal du sige GET /, ikke GET /index.php ;)
Avatar billede yezbarh Nybegynder
02. november 2005 - 23:06 #3
Sjovt.. den udskriver stadig null :)

nyUd.println("GET / HTTP/1.0");
nyUd.println("Host: www.google.dk");

!-)
Avatar billede arne_v Ekspert
02. november 2005 - 23:08 #4
har du recompilet ?

jeg skifter fra null til HTTP/1.0 200 OK ved de rettelser
Avatar billede arne_v Ekspert
02. november 2005 - 23:10 #5
[iøvrigt mener jeg at Google ikk eoptræder korrekt - den bør give en status kode
505 hvis den ikke kan lide HTTP/0.9]
Avatar billede yezbarh Nybegynder
02. november 2005 - 23:15 #6
Hm, ja - har recompilet.

Men der ser jo rigtigt ud, ik'?


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

public class program extends Applet
{
  int ialt;
  boolean slut;
  String nyUd,nyInd,tekst,data,klient,ind,ud;
public  void init()
{
try {
Socket klient = new Socket("www.google.dk",80);
OutputStream ud = klient.getOutputStream();
InputStream ind = klient.getInputStream();
PrintWriter nyUd = new PrintWriter(ud);
BufferedReader nyInd = new BufferedReader(new InputStreamReader(ind));

nyUd.println("GET HTTP/1.0");
nyUd.println("Host: www.google.dk");
nyUd.println();
nyUd.flush();
data = nyInd.readLine();
System.out.println(data);
  slut=false;
  tekst = getParameter("tekst");
  ialt = tekst.length();
}catch (Exception e){}}
public void start()
{
System.out.println(""+data+" \n Programmet startes");
}
public void vent()
{
  try {
     
Thread.sleep(2000);
}catch(Exception e){}}

public void slut()
{
vent();
slut=true;
System.out.println("Programmet sluttes!");
repaint();
}

public void paint(Graphics g)
{
start();
g.drawString(".. "+data+"..",100,100);
vent();
slut();
}}
Avatar billede pidgeot Nybegynder
02. november 2005 - 23:16 #7
nyUd.println("GET HTTP/1.0");

skal være

nyUd.println("GET / HTTP/1.0");

Du skal stadig specificere en fil - når dete er index, hedder den / (skråstreg).
Avatar billede arne_v Ekspert
02. november 2005 - 23:17 #8
nu er det jo en applet

har du også genstartet browseren ?

den har tit tendenser til at ville cache
Avatar billede mikkelbm Nybegynder
02. november 2005 - 23:19 #9
Og for at supplere Arne, så har jeg været ude for at skulle lukke alle åbne browservinduer ned, for at den fangede ændringer i min applet.
Avatar billede yezbarh Nybegynder
02. november 2005 - 23:20 #10
Stadigvæk null, hm..

Ja, har genstartet osv.. Og lavet nyt navn og lavet en ny <applet code=".."> osv.

Hvad kan der dog være galdt?
Avatar billede pidgeot Nybegynder
02. november 2005 - 23:21 #11
Har dit applet overhovedet tilladelse til at connecte til en remote host? Det kunne godt være problemet, da du jo "kvæler" alle exceptions og derfor ikke vil kunne se det.
Avatar billede yezbarh Nybegynder
02. november 2005 - 23:27 #12
Ah..

ava.security.AccessControlException: access denied (java.net.SocketPermission www.google.dk resolve)
    at java.security.AccessControlContext.checkPermission(Unknown Source)
    at java.security.AccessController.checkPermission(Unknown Source)
    at java.lang.SecurityManager.checkPermission(Unknown Source)
    at java.lang.SecurityManager.checkConnect(Unknown Source)
    at java.net.InetAddress.getAllByName0(Unknown Source)
    at java.net.InetAddress.getAllByName0(Unknown Source)
    at java.net.InetAddress.getAllByName(Unknown Source)
    at java.net.InetAddress.getByName(Unknown Source)
    at java.net.InetSocketAddress.<init>(Unknown Source)
    at java.net.Socket.<init>(Unknown Source)
    at programny.init(programny.java:14)
    at sun.applet.AppletPanel.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)


-- Hvad gør jeg så? :-/
Avatar billede arne_v Ekspert
02. november 2005 - 23:29 #13
opgiver

eller putter din class i en jar og signer den
Avatar billede pidgeot Nybegynder
02. november 2005 - 23:29 #14
Du skal have givet dit applet fuld tilladelse til at connecte. Hvordan du gør det, ved jeg desværre ikke (jeg har INGEN erfaring med at programmere Java), men jeg kunne forestille mig der enten er et eller andet der kan sættes et sted, eller at du skal signere dit applet.
Avatar billede yezbarh Nybegynder
02. november 2005 - 23:33 #15
Underligt jeg ikke kan, du beskrev da i 23:10:47 at du modtog output?
Avatar billede arne_v Ekspert
02. november 2005 - 23:35 #16
jeg testede ikke koden som applet ...
Avatar billede yezbarh Nybegynder
02. november 2005 - 23:37 #17
Ah okay. Lukker her.
Avatar billede yezbarh Nybegynder
02. november 2005 - 23:38 #18
Mange tak for hjælpen ellers.
Avatar billede arne_v Ekspert
02. november 2005 - 23:42 #19
skulle pidgeot ikke have haft alle pointene for hans gode hjælp ?

[ikke den store forskel med point summen, men ...]
Avatar billede yezbarh Nybegynder
03. november 2005 - 00:19 #20
Jo, men hvad nytter det når der er 0?
Men kan da godt lige lave et ref. spørgsmål med 0 point, hvis det er?
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