import java.io.*; 
import java.net.*; 
class TCPClientSend { 

  public static void main(String argv[]) throws Exception 
  {
    String fileName = "alice.txt";

    Socket clientSocket = new Socket(argv[0], 6789); 
    // DataOutputstream bietet

    DataOutputStream outToServer = 
      new DataOutputStream(clientSocket.getOutputStream()); 
    // Input hier eigentlich unnötig
    BufferedReader inFromServer = 
      new BufferedReader(new InputStreamReader(clientSocket.getInputStream())); 

    File f = new File(fileName); 
    // Bytestream 
    FileInputStream fin = new FileInputStream(f);
    // FileInputStream bietet die Gesamtzahl lesbarer Bytes
    System.out.println("Total file size to read (in bytes) : "+ fin.available());

    // Alternativ byteweises Lesen und Schreiben
    //
    // long fileLength = f.length();		
    // for (long i=1; i<= fileLength; i++) {
    //   int data = fin.read();
    //	 outToServer.write(data);
    // }

    byte[] buffer = new byte[1024];
    // Prüfung auf noch verfügbare Bytes
    // Alternative: Prüfung auf Streamende
    while (fin.available() > 0) {
      // Liest und schreibt Puffer
      outToServer.write(buffer, 0, fin.read(buffer) );
    }
    fin.close();
    clientSocket.close(); 
  } 
} 
