黑马程序员技术交流社区
标题:
TCP上传图片的疑问(未解决)
[打印本页]
作者:
为梦想而活着
时间:
2014-8-13 10:15
标题:
TCP上传图片的疑问(未解决)
本帖最后由 为梦想而活着 于 2014-8-13 11:41 编辑
TCP上传图片时,请问为什么编译都没有错误而上传的图片却因为过大windows查看不了呢??
客户端:
/*客户端:
1.建立服务端点
2.读取客户端已有的图片数据
3.通过socket的输出流将数据发给服务端。
4.读取服务端反馈信息。
5.关闭。*/
package TCP;
import java.io.*;
import java.net.*;
public class PicClient {
public static void main(String[] args) throws Exception{
//建立socket服务
Socket s=new Socket("127.0.0.1", 10007);
//读取数据-->字节流
FileInputStream fis=new FileInputStream("1.jpg");
//输出数据-->获取socket输出流向服务端写数据
OutputStream out=s.getOutputStream();
byte []buf=new byte[1024];//定义缓冲区
int len=0; //字节长度
while((len=fis.read())!=-1){
out.write(buf, 0, len);
}
s.shutdownOutput(); //告诉服务端已写完数据
//接受服务器发送的反馈信息
InputStream in=s.getInputStream();
byte[]bufin=new byte[1024];
int inLen=in.read(buf);
System.out.println("From Server:"+new String(buf, 0, inLen));
//关闭资源
fis.close();
s.close();
}
}
复制代码
服务端:
package TCP;
import java.io.*;
import java.net.*;
public class PicServer {
public static void main(String[] args) throws Exception{
ServerSocket ss=new ServerSocket(10007);
while(true){
Socket s=ss.accept();
new Thread(new PicThread(s)).start();
}
}
}
class PicThread implements Runnable{
private Socket s;
public PicThread(Socket s) {
this.s=s;
}
@Override
public void run() {
String ip=s.getInetAddress().getHostAddress();
InputStream in;
try {
in = s.getInputStream();
FileOutputStream fos=new FileOutputStream("server.jpg");
byte[]buf=new byte[1024];
int len=0;
//又在这犯错误了!要记得将buf传进去,不然输出的肯定是空
while((len=in.read(buf))!=-1){
fos.write(buf, 0, len);
}
//向客户端发送消息(socket输出流)
OutputStream out=s.getOutputStream();
out.write("图片上传成功!".getBytes());
//关闭资源
fos.close();
s.close();
} catch (Exception e) {
throw new RuntimeException(ip+"上传失败!");
}
}
}
复制代码
程序可以正常运行,只是写入目的的图片无法打开!纠结中·········
作者:
そ花痕ゐ蝶梦
时间:
2014-8-13 10:45
应该是没问题的!
作者:
为梦想而活着
时间:
2014-8-13 11:40
找到问题了!客服端中没有将buf数组传进去···悲剧啊···
作者:
敲敲代码
时间:
2014-8-17 11:28
没法上传图片啊
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2