T
tweek
Gast
Hallo!
Ich habe gerade das Kapitel über Socket Programmierung im "Java ist auch eine Insel" Buch durchgelesen und mir ist zu Listing 17.12 bzw 17.13 eine Frage eingefallen:
http://www.galileocomputing.de/open...17_008.htm#mjc7c924f6c9dc8e6d8721a70b17b2b73a
Multiplikations-Server:
Multiplikations-Client:
Was wenn der Multiplikations-Client die Ausgabe - also die zu multiplizierenden Zahlen - mittels out.write() sendet, bevor der Server den In- und OutputStream initialisert hat (getInputStream(), getOutputStream() ). So gesehen hört der Server dann noch nicht mittels in.read(), während der Client schon mit out.write() sendet...
Stimmt das oder wird das im Stream evtl. gespeichert und sobald in.read() im Server aufgerufen wird, stehen die bereits gesendeten Daten im Nachhinein zur Verfügung?
Wäre nett wenn jemand dazu ein paar Worte schreiben könnte!
Vielen Dank schon mal!
Gruß,
manuel[/code]
Ich habe gerade das Kapitel über Socket Programmierung im "Java ist auch eine Insel" Buch durchgelesen und mir ist zu Listing 17.12 bzw 17.13 eine Frage eingefallen:
http://www.galileocomputing.de/open...17_008.htm#mjc7c924f6c9dc8e6d8721a70b17b2b73a
Multiplikations-Server:
Code:
package com.tutego.insel.net;
import java.io.*;
import java.net.*;
public class MulServer
{
private static void handleConnection( Socket client ) throws IOException
{
InputStream in = client.getInputStream();
OutputStream out = client.getOutputStream();
int factor1 = in.read();
int factor2 = in.read();
out.write( factor1 * factor2 );
}
public static void main( String[] args ) throws IOException
{
ServerSocket server = new ServerSocket( 3141 );
while ( true )
{
Socket client = null;
try
{
client = server.accept();
handleConnection ( client );
}
catch ( IOException e ) {
e.printStackTrace();
}
finally {
if ( client != null )
try { client.close(); } catch ( IOException e ) { }
}
}
}
}
Multiplikations-Client:
Code:
package com.tutego.insel.net;
import java.net.*;
import java.io.*;
class MulClient
{
public static void main( String[] args )
{
Socket server = null;
try
{
server = new Socket( "localhost", 3141 );
InputStream in = server.getInputStream();
OutputStream out = server.getOutputStream();
out.write( 4 );
out.write( 9 );
int result = in.read();
System.out.println( result );
}
catch ( UnknownHostException e ) {
e.printStackTrace();
}
catch ( IOException e ) {
e.printStackTrace();
}
finally
{
if ( server != null )
try { server.close(); } catch ( IOException e ) { }
}
}
}
Was wenn der Multiplikations-Client die Ausgabe - also die zu multiplizierenden Zahlen - mittels out.write() sendet, bevor der Server den In- und OutputStream initialisert hat (getInputStream(), getOutputStream() ). So gesehen hört der Server dann noch nicht mittels in.read(), während der Client schon mit out.write() sendet...
Stimmt das oder wird das im Stream evtl. gespeichert und sobald in.read() im Server aufgerufen wird, stehen die bereits gesendeten Daten im Nachhinein zur Verfügung?
Wäre nett wenn jemand dazu ein paar Worte schreiben könnte!
Vielen Dank schon mal!
Gruß,
manuel[/code]