发送类 Sender
public class Sender extends Thread{
PipedOutputStream pOutputStream = new PipedOutputStream();
public PipedOutputStream getOutputStream(){
return pOutputStream;
}
@Override
public void run() {
try {
System.out.println("sender run.....");
String text = new String("www.nc0476.com");
pOutputStream.write(text.getBytes());
} catch (IOException e) {
e.printStackTrace();
}finally{
if(pOutputStream!=null){
try {
pOutputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
接收类 Receive 与ByteArrayOutputStream 结合使用
public class Receiver extends Thread{
PipedInputStream pipedInputStream = new PipedInputStream();
public PipedInputStream getInputStream(){
return pipedInputStream;
}
@Override
public void run() {
try {
System.out.println("receiver run.....");
byte[] buf = new byte[1024];
int len = 0;
//把管道流信息放入到内存中
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
while((len= pipedInputStream.read(buf))!=-1){
byteArrayOutputStream.write(buf,0,len);
}
System.out.println(new String(byteArrayOutputStream.toByteArray()));
//2,直接读取
// int len = pipedInputStream.read(buf);
// System.out.println("pip="+new String(buf,0,len));
} catch (IOException e) {
e.printStackTrace();
}finally{
if(pipedInputStream!=null){
try {
pipedInputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
测试类
@Test
public void test1() throws Exception{}{
Sender sender = new Sender();
Receiver receiver = new Receiver();
PipedOutputStream pipedOutputStream = sender.getOutputStream();
PipedInputStream pipedInputStream = receiver.getInputStream();
try {
System.out.println("test1");
//输入流与输出流相互连接
pipedOutputStream.connect(pipedInputStream);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
sender.start();
receiver.start();
}