本帖最后由 为梦想而活着 于 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+"上传失败!");
- }
-
-
- }
- }
复制代码 程序可以正常运行,只是写入目的的图片无法打开!纠结中·········
|
|