Pages: [1]   Go Down
Print
Author Topic: Problema connessione in un esercizio  (Read 1051 times)
0 Members e 1 Utente non registrato stanno visualizzando questa discussione.
Daréios89
Forumista Eroico
*****
Offline Offline

Gender: Male
Posts: 2.679


La musica è la forma d'arte suprema.


« on: 18-12-2012, 01:02:35 »

Ciao a tutti, stavo svolgendo un esercizio, ma stranamente ho un' eccezione che non so spiegarmi:

Code:
Exception in thread "main" java.net.ConnectException: connect: Address is invalid on local machine, or port is not valid on remote machine
at java.net.DualStackPlainSocketImpl.connect0(Native Method)
at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:69)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:339)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:200)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:182)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:157)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:391)
at java.net.Socket.connect(Socket.java:579)
at java.net.Socket.connect(Socket.java:528)
at java.net.Socket.<init>(Socket.java:425)
at java.net.Socket.<init>(Socket.java:241)
at Client.main(Client.java:21)


Sembra che il problema sia al momento di creazione della socket:

Ecco il codice:

Code:
import java.io.*;
import java.net.*;

public class Client{
public static void main(String [] args) throws Exception
{

/*try{*/

final String SERVERADDR= "151.97.252.130";
final int PORT=80;

InetAddress addr=InetAddress.getByName(SERVERADDR);

final String msg= "GET /pappalardo/prova/06.aux\n";
int index=0;
String s="";
boolean trovato=false;
String tmp="";

Socket client=new Socket(addr, PORT);


OutputStreamWriter o=new OutputStreamWriter(client.getOutputStream());
BufferedWriter w=new BufferedWriter(o);
PrintWriter out=new PrintWriter(w, true);


System.out.println("Invio la stringa: "+"GET /pappalardo/prova/06.aux\n");
out.println("GET /pappalardo/prova/06.aux\n");

InputStreamReader in=new InputStreamReader(client.getInputStream());
BufferedReader reader=new BufferedReader(in);


while(!trovato){

tmp+=reader.readLine();

for(int i=0; i<tmp.length(); i++){
if(tmp.charAt(i)=='x' || tmp.charAt(i)==' ' || tmp.charAt(i)=='\n')
index=i;
trovato=true;
}

   s+=tmp.substring(index, tmp.length());
}

while(reader.ready()){

s+=reader.readLine();
}

s+='\n';



    System.out.println("Invio su connessione aperta: "+s);
    out.println(s);        //Server nuovo stream output????

InputStreamReader i2=new InputStreamReader(client.getInputStream());
BufferedReader reader2=new BufferedReader(i2);

System.out.println("Ho ricevuto: "+reader2.readLine());


client.close();
reader2.close();
reader.close();
out.close();

  /*  }

catch(Exception e){
System.out.println("Errore!!!");
}*/
}
}
Logged

"Utilizzare sempre de l'Hôpital.....è come andare a caccia di farfalle con un bazooka".
callo
Forumista
***
Offline Offline

Gender: Male
Posts: 564


"Quanto manca alla vetta?";"Tu sali e non pensare"


« Reply #1 on: 18-12-2012, 01:17:05 »

A me non da alcuna eccezione....anzi il risultato è questo:
Code:
Invio la stringa: GET /pappalardo/prova/06.aux

Invio su connessione aperta: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxGET /gp/prova/06b.aux

Ho ricevuto: null
Logged

"A cavallina....a cavallina.....a chi era bedda quannu  curreva" [Cit.  Dal Tenerissimo via plebiscito]
callo
Forumista
***
Offline Offline

Gender: Male
Posts: 564


"Quanto manca alla vetta?";"Tu sali e non pensare"


« Reply #2 on: 18-12-2012, 01:45:27 »

Io comunque ho risolto così:
Code:
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.InetAddress;
import java.net.Socket;
import java.nio.Buffer;

/*
 * Scrivere in C o Java un programma che:
apra una connessione verso l'IP 151.97.252.130, port 80
invii la stringa "GET /pappalardo/prova/06.aux\n"
nello stream di byte ricevuti individui il primo carattere diverso da 'x', spazio o fine riga
memorizzi questo byte e tutti quelli che il server invierà ancora in una variabile stringa denominata "s"
invii, sulla connessione già aperta, la stringa s, seguita da "\n"
scriva i byte ricevuti in risposta sulla standard output
 */


public class esercizio6 {

/**
* @Autore Carlo Zermo
*/
private static int port;
private static void setPort(int newPort)
{
port=newPort;
}
public static int getPort()
{
return port;
}

private static String address;
private static void setAddress(String s)
{
address=s;
}
public static String getAddress()
{
return address;
}

private static BufferedWriter bw;
private static BufferedReader br;
private static InputStreamReader isr;
private static OutputStreamWriter osw;
private static PrintWriter pw;

public static void main(String[] args)
{
setPort(80);
setAddress("151.97.252.130");
InetAddress addr;
Socket sock=null;
try
{
addr=InetAddress.getByName(getAddress());
sock=new Socket(addr,getPort());
isr=new InputStreamReader(sock.getInputStream());
br=new BufferedReader(isr);
osw=new OutputStreamWriter(sock.getOutputStream());
bw=new BufferedWriter(osw);
pw=new PrintWriter(bw,true);
// System.out.println(sock);
StringBuilder msgToSever=new StringBuilder("GET /pappalardo/prova/06.aux\n");
pw.println(msgToSever);
StringBuilder s=new StringBuilder();
String msgFromServer="";
char c;
for(int i=0;(msgFromServer=br.readLine())!=null;i++)
{
for(int j=0;j<msgFromServer.length();j++)
if(msgFromServer.charAt(j)!='x')
s.append(msgFromServer.charAt(j));
}
s.append("x");
s.replace(5, 7, "pappalardo");
// System.out.println(s);
sock.close();
sock=new Socket(addr,getPort());
isr=new InputStreamReader(sock.getInputStream());
br=new BufferedReader(isr);
osw=new OutputStreamWriter(sock.getOutputStream());
bw=new BufferedWriter(osw);
pw=new PrintWriter(bw,true);
pw.println(s);
s=new StringBuilder();
s.append(br.readLine());
System.out.println(s);
}
catch(Exception e)
{
System.out.print("Errore:");
e.printStackTrace();
}

}

}
Logged

"A cavallina....a cavallina.....a chi era bedda quannu  curreva" [Cit.  Dal Tenerissimo via plebiscito]
Daréios89
Forumista Eroico
*****
Offline Offline

Gender: Male
Posts: 2.679


La musica è la forma d'arte suprema.


« Reply #3 on: 18-12-2012, 09:44:49 »

A me non da alcuna eccezione....anzi il risultato è questo:
Code:
Invio la stringa: GET /pappalardo/prova/06.aux

Invio su connessione aperta: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxGET /gp/prova/06b.aux

Ho ricevuto: null

Si, sicuramente sei su Linux, vero? Ho notato in tarda serata che non c' è questo problema eseguendo il codice da ubuntu, invece su Windows 8 si. Ho risolto l' esercizio comunque e ne approfitto per dire che c' è un errore da parte del prof perché nella risposta del server la directory è sbagliata, e quindi restituirà null.
Logged

"Utilizzare sempre de l'Hôpital.....è come andare a caccia di farfalle con un bazooka".
zElOtO
Forumista
***
Offline Offline

Gender: Male
Posts: 845



WWW
« Reply #4 on: 18-12-2012, 22:21:10 »

Questo è il mio esercizio funzionante:

Code:
/*
Scrivere in C o Java un programma che:
- apra una connessione verso l'IP 151.97.252.130, port 80
- invii la stringa "GET /pappalardo/prova/06.aux\n"
- nello stream di byte ricevuti individui il primo carattere diverso da 'x', spazio o fine riga
- memorizzi questo byte e tutti quelli che il server invierà ancora in una variabile stringa denominata "s"
- invii, sulla connessione già aperta, la stringa s, seguita da "\n"
- scriva i byte ricevuti in risposta sulla standard output
 */
import java.io.*;
import java.net.*;

public class Esercizio6 {
private static final int PORT = 80;
private static final String IP = "151.97.252.130";
private static final String message = "GET /pappalardo/prova/06.aux\n";
private static Socket client;
private static BufferedReader input;
private static PrintWriter output;

public static void main(String args[]) throws IOException {
client = createSocket();

output = createOutput(client);
output.println(message);

input = createInput(client);
String s = ""; //salvo il risultato qua
int start;
char current;
boolean trovato = false;
while ((start = input.read()) != -1) {
current = (char) start;
if (!trovato) {
if (current != 'x' && current != '\n' && current != ' ') {
trovato = true;
s += current;
}
}
else {
s += current;
}
}
s += "\n";
s = s.replace("gp", "pappalardo");
closeAll();

client = createSocket();
input = createInput(client);
output = createOutput(client);
output.println(s);

//stampo risposta
System.out.println(input.readLine());
closeAll();
}
private static Socket createSocket() throws IOException {
InetAddress addr = InetAddress.getByName(IP);
return new Socket(addr, PORT);
}
private static PrintWriter createOutput(Socket client) throws IOException {
BufferedWriter outBuffer = new BufferedWriter(new OutputStreamWriter(client.getOutputStream()));
return new PrintWriter(outBuffer, true);
}
private static BufferedReader createInput(Socket client) throws IOException {
InputStreamReader input = new InputStreamReader(client.getInputStream());
return new BufferedReader(input);
}
private static void closeAll() throws IOException {
if (client != null) { client.close(); }
if (input != null) { input.close(); }
if (output != null) { output.close(); }
}
}
Logged

I computer sono incredibilmente veloci, accurati e stupidi. Gli uomini sono incredibilmente lenti, inaccurati e intelligenti. Insieme sono una potenza che supera l'immaginazione. (A. Einstein)

Damiano Cancemi
www.damianocancemi.com
www.nerdbren.com
www.nerdbren.com/blog
Pages: [1]   Go Up
Print
Jump to: