Newsgroup: it.comp.java
Titolo: Client Server

Ho bisogno di far dialogare un programma A con un Thread B
residenti su due macchine diverse
come faccio?
1) creo le classi Socket, InputStream e  OutputStream
2) le inizializzo
3) come scambio dati
con available () controllo se ci sono dati pronti?
if (InputStream.available())
    {
    // leggo i dati
    }
facendo cosě ho creato una socket non bloccante?
per fare un server anche piccolo serve J2EE
thread e syncronized ci sono in J2SE  ??
Ciao e grazie per la lettura
    Gabry

 residenti su due macchine diverse
Ti allego un esempio didattico per iniziare ad affrontare il problema
occorre che li modifichi possibilmente aiutandoti con un manuale che ti
permetta di approfondire i discorsi relativi ai socket, agli stream, ai
vettori...
1° ) -------------------
la macchina A deve caricare un programmino che faccia da server
-----------------------
es:)
import java.io.*;
import java.net.*;
import java.util.*;
public class esempioS{
public esempioS(){
String strTmp="";
int i=0;
 try{
  ServerSocket ss = new ServerSocket (2222);
  System.out.println ("partito "  + ss.toString());
  while (true){
   Socket s = ss.accept ();
   System.out.println ("ACCETTATO" );
   InputStream sin = s.getInputStream();
   OutputStream sou = s.getOutputStream();
   OutputStreamWriter ow = new OutputStreamWriter(sou);
   BufferedWriter bw=new BufferedWriter(ow);
   while ( (i = sin.read()) > -1 ){
    System.out.println("<" + strTmp + ">");
     if ( i != 13){
      strTmp = strTmp + (char) i;
     }
     else
     {
      i = sin.read();
      if (strTmp.equals("UNO")){
       bw.write("CIAO",0,4);
       bw.newLine();
       bw.flush();
      }
      else if (strTmp.equals("DUE")){
       bw.write("HELLO",0,5);
       bw.newLine();
       bw.flush();
      }
      else {
       bw.write("MA",0,2);
       bw.newLine();
       bw.flush();
      }
     strTmp = "";
     }
    }
   }
  }
  catch (Exception e){
   System.out.println ("ERRORE NELL'ESECUZIONE DEL SERVER.\ndetails:\n" +
e.getMessage ());
   System.exit (0);
  }
 }
 public static void main(String[] args){
 new esempioS();
 }
}
2° ) -------------------
la macchina B deve caricare un programmino che faccia da client
(devi inserire l'indirizzo IP della macchina B al posto di 127.0.0.1)
-----------------------
import java.util.*;
import java.io.*;
import java.lang.*;
import java.net.*;
public class esempio
{
public esempio(){}
public static void main(String[] args)
{
esempio es = new esempio();
es.esegui();
}
public void esegui(){
try{
 int i=0 ;
 String strTmp="";
 Socket s=new Socket("127.0.0.1",2222);
 System.out.println("PARTITO");
 InputStream sin = s.getInputStream();
 OutputStream sou = s.getOutputStream();
 OutputStreamWriter ow = new OutputStreamWriter(sou);
 BufferedWriter bw=new BufferedWriter(ow);
 bw.write("UNO",0,3);
 bw.newLine();
 bw.flush();
 while(true){
  while ( (i = sin.read()) > -1 ){
   System.out.println("<" + strTmp + ">");
   if ( i != 13){
    strTmp = strTmp + (char) i;
   }
   else
   {
    i = sin.read();
    if (strTmp.equals("CIAO")){
     bw.write("DUE",0,3);
     bw.newLine();
     bw.flush();
    }
    else if (strTmp.equals("HELLO")){
     bw.write("OK",0,2);
     bw.newLine();
     bw.flush();
    }
    else {;}
   strTmp="";
   }
  }
 }
}
catch(IOException e){
 System.out.println("ERRORE " + e);
}
return;
}
}
Saluti
Armando Daniele