Oppure

Loading
25/04/10 16:07
Salve a tutti ho un problema:
Ho creato due classi, un server e un client. In pratica io invio una stringa al server dal client e poi dovrei reinviarla al client, recuperarla e stamparla a video. Ora, se io invio la stringa al server e la stampo sul server dopo averla anche dopo averla reinviata al client tutto apposto, appena nel client inserisco il codice per recuperare la stringa dall'InputStrem si blocca tutto e non riesce neanche a leggerla dal server.

Questo è il codice delle due classi:

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package retemia;

import com.sun.jmx.remote.internal.ClientCommunicatorAdmin;
import java.io.BufferedReader;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintStream;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;

/**
 *
 * @author paolo
 */
public class Server{


    public static void main(String[] args) throws IOException{
    Socket client=null;
    ServerSocket server= null;
    InputStream in;
    BufferedReader ind=null;
    OutputStream out=null;
    PrintStream p= null;
    DataOutputStream outd=null;
    try{
        server= new ServerSocket(5155);
        while(true){
            client=server.accept();
            in= client.getInputStream();
            out= client.getOutputStream();
            ind= new BufferedReader(new InputStreamReader(in));
            p= new PrintStream(out);
            outd= new DataOutputStream(out);
            String x="";
            while((x=ind.readLine())!=null){
                x=x.substring(2);
                p.println(x);
                System.out.println(x);
            }
        }
    }catch(IOException e){
        System.err.print(e);
    }

    }

}



e questo è il client:

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package retemia;

import java.io.BufferedReader;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.io.Writer;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.Socket;
import retemia.Server;

/**
 *
 * @author paolo
 */
public class Client {
    public static void main(String[] args) throws IOException{
        InputStream in=null;
        Socket sock=null;
        OutputStream out=null;
        DataOutputStream outd=null;
        BufferedReader ind= null;
        try{
            sock= new Socket("127.0.0.1", 5155);
            in= sock.getInputStream();
            out= sock.getOutputStream();
            outd= new DataOutputStream(out);
            ind= new BufferedReader(new InputStreamReader(in));
            outd.writeUTF("ciao");
            System.out.println("bububu");
            String x=ind.readLine();
            System.out.println("vafancul");
            System.out.println(x);
        }catch(IOException e){
            System.err.print(e);
        }finally{
            if(sock!=null){
                sock.close();
            }
        }
    }
}


Avete qualche idea??
26/04/10 13:08
Ho risolto utilizzando per la scrittura e la lettura PrintWriter e BufferedReader!
14/06/10 16:30
killer
Ciao..non ti conviene utilizzare PrintWriter perche genera dei problemi..ti consiglio di utilizzare la classe DataOutputStream per la scrittura dei dati sulla socket ..bye
aaa