public class Pipe2Socket
{ public static final void main( String[] argv )
{
new Thread()
{
public void run()
{
new Pipe2Socket().test1();
}
}.start();
new Thread()
{
public void run()
{
new Pipe2Socket().test2();
}
}.start();
} public void test1()
{
try {
java.net.ServerSocket ss = new java.net.ServerSocket( 1111 );
while ( true ) {
java.net.Socket s = ss.accept();
java.io.OutputStream os = s.getOutputStream();
output( os );
s.close();
}
} catch ( Exception ex ) {};
} public void test2()
{
try {
java.net.ServerSocket ss = new java.net.ServerSocket( 2222 );
while ( true ) {
java.net.Socket s = ss.accept();
java.io.OutputStream os = s.getOutputStream();
java.io.ByteArrayOutputStream baos = new java.io.
ByteArrayOutputStream();
output( baos );
os.write( baos.toByteArray() );
s.close();
}
} catch ( Exception ex ) {};
} public void output( java.io.OutputStream os )
{
try {
for ( int i = 'a'; i < 'z'; i++ ) {
os.write( i );
Thread.sleep( 200 );
}
} catch ( Exception ex ) {};
}}用
telnet localhost 1111
及
telnet localhost 1111
测试没用Pipe及用Pipe的差别
{ public static final void main( String[] argv )
{
new Thread()
{
public void run()
{
new Pipe2Socket().test1();
}
}.start();
new Thread()
{
public void run()
{
new Pipe2Socket().test2();
}
}.start();
} public void test1()
{
try {
java.net.ServerSocket ss = new java.net.ServerSocket( 1111 );
while ( true ) {
java.net.Socket s = ss.accept();
java.io.OutputStream os = s.getOutputStream();
output( os );
s.close();
}
} catch ( Exception ex ) {};
} public void test2()
{
try {
java.net.ServerSocket ss = new java.net.ServerSocket( 2222 );
while ( true ) {
java.net.Socket s = ss.accept();
java.io.OutputStream os = s.getOutputStream();
java.io.ByteArrayOutputStream baos = new java.io.
ByteArrayOutputStream();
output( baos );
os.write( baos.toByteArray() );
s.close();
}
} catch ( Exception ex ) {};
} public void output( java.io.OutputStream os )
{
try {
for ( int i = 'a'; i < 'z'; i++ ) {
os.write( i );
Thread.sleep( 200 );
}
} catch ( Exception ex ) {};
}}用
telnet localhost 1111
及
telnet localhost 1111
测试没用Pipe及用Pipe的差别
{
try {
java.net.ServerSocket ss = new java.net.ServerSocket( 3333 );
while ( true ) {
java.net.Socket s = ss.accept();
final java.io.PipedOutputStream pos = new java.io.PipedOutputStream();
java.io.PipedInputStream pis = new java.io.PipedInputStream(pos);
java.io.OutputStream os = s.getOutputStream();
new Thread()
{
public void run(){
output( pos );
try{
pos.close();
}catch(Exception ex){};
}
}.start();
int i;
while((i=pis.read())!=-1)
{
os.write(i);
}
s.close();
}
}
catch (Exception ex) {
}
}用telnet localhost 3333测试