黑马程序员技术交流社区
标题:
TCP + IO 问题
[打印本页]
作者:
杜光
时间:
2013-6-14 13:57
标题:
TCP + IO 问题
import java.io.*;
import java.net.*;
class TcpClient
{
public static void main(String[] args) throws Exception
{
Socket s = new Socket("192.168.31.171",10007);
BufferedInputStream bis =
new BufferedInputStream(new FileInputStream("1.jpg"));
OutputStream out = s.getOutputStream();
byte[] buf = new byte[1024];
int len = 0;
while ((len=bis.read(buf))!=-1)
{
out.write(buf,0,len);
}
s.shutdownOutput();
BufferedReader bufIn =
new BufferedReader(new InputStreamReader(s.getInputStream()));
System.out.println(new String(bufIn.readLine()));
bis.close();
s.close();
}
}
/*
服务端:
*/
class TcpServer
{
public static void main(String[] args) throws Exception
{
ServerSocket ss = new ServerSocket(10007);
Socket s = ss.accept();
InputStream fis = s.getInputStream();
FileOutputStream out = new FileOutputStream("Server.jpg");
byte[] by = new byte[1024];
int len = 0;
while((len=fis.read(by))!=-1)
{
out.write(by,0,len);
}
PrintWriter pw2 = new PrintWriter(s.getOutputStream(),true);
pw2.println("上传成功");
out.close();
s.close();
ss.close();
}
}
复制代码
OutputStream out = s.getOutputStream();
上面这行写成下面为什么报错,说不兼容类型?求解
FileOutputStream out = s.getOutputStream();
作者:
刘勇强
时间:
2013-6-14 14:10
本帖最后由 刘勇强 于 2013-6-14 14:11 编辑
Socket类的getOutputStream()方法的返回值是OutputStream类型的,你赋给他的子类FileOutputStream 当然就不兼容了比如狗 猫是动物的子类 取得一个动物对象,你把他赋给狗或猫 类型转换异常吧
作者:
′х.|鰉❤耔
时间:
2013-6-14 14:22
你还是查看一下API吧~·看看它的类型吧~·
作者:
704050a
时间:
2013-6-14 15:26
s.getOutputStream();返回的是OuputStream,FileOutputStream 是它的子类,不能把父类赋给一个子类对象,只能运用多态,将子类对象的引用赋给父类对象。
作者:
704050a
时间:
2013-6-14 15:26
s.getOutputStream();返回的是OuputStream,FileOutputStream 是它的子类,不能把父类赋给一个子类对象,只能运用多态,将子类对象的引用赋给父类对象。
作者:
peerless2012
时间:
2013-6-14 16:43
参看jdk
public class FileOutputStream extends OutputStream
文件输出流是用于将数据写入 File 或 FileDescriptor 的输出流。
FileOutputStream继承自OutputStream
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2