当前位置:编程学习 > JAVA >>

读取客户端已有的图片数据

  

[java] 
package net2; 
 
import java.io.BufferedInputStream; 
import java.io.BufferedOutputStream; 
import java.io.BufferedReader; 
import java.io.FileInputStream; 
import java.io.IOException; 
import java.io.InputStream; 
import java.io.OutputStream; 
import java.net.Socket; 
import java.net.UnknownHostException; 
 
/*
 客户端:
 1,服务端点
 2,读取客户端已有的图片数据
 3,通过socket输出流将数据发给服务端
 4,读取服务端反馈信息
 5,关闭
 */ 
public class PicClient { 
 
 
    public static void main(String[] args) throws Exception { 
         
        Socket s=new Socket("192.168.1.102", 10029); 
        BufferedInputStream bufr=new BufferedInputStream(new FileInputStream("C:\\1.jpg")); 
        OutputStream out=s.getOutputStream(); 
        byte[]buf=new byte[1024]; 
        int len=0; 
        while((len=bufr.read(buf))!=-1) 
        { 
            out.write(buf,0,len); 
        } 
        //告诉服务端数据已写完  
        s.shutdownOutput(); 
         
       InputStream in=s.getInputStream(); 
       byte[] bufIn=new byte[1024]; 
        int num=    in.read(bufIn)  ; 
        System.out.println(new String(bufIn,0,num)); 
        bufr.close(); 
        s.close(); 
    } 
 

package net2;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
import java.net.UnknownHostException;

/*
 客户端:
 1,服务端点
 2,读取客户端已有的图片数据
 3,通过socket输出流将数据发给服务端
 4,读取服务端反馈信息
 5,关闭
 */
public class PicClient {


 public static void main(String[] args) throws Exception {
  
  Socket s=new Socket("192.168.1.102", 10029);
  BufferedInputStream bufr=new BufferedInputStream(new FileInputStream("C:\\1.jpg"));
  OutputStream out=s.getOutputStream();
  byte[]buf=new byte[1024];
  int len=0;
  while((len=bufr.read(buf))!=-1)
  {
   out.write(buf,0,len);
  }
  //告诉服务端数据已写完
  s.shutdownOutput();
  
       InputStream in=s.getInputStream();
       byte[] bufIn=new byte[1024];
     int num= in.read(bufIn) ;
     System.out.println(new String(bufIn,0,num));
     bufr.close();
     s.close();
 }

}

 

 

 


[java] 
package net2; 
 
import java.io.FileOutputStream; 
import java.io.IOException; 
import java.io.InputStream; 
import java.io.OutputStream; 
import java.net.ServerSocket; 
import java.net.Socket; 
 
/*
 * 服务端
 */ 
public class PicServer { 
 
    public static void main(String[] args) throws Exception { 
     
       ServerSocket ss=new ServerSocket(10029); 
       Socket s=ss.accept(); 
       String ip = s.getInetAddress().getHostAddress(); 
        System.out.println("ip" + ip + "connect..."); 
       InputStream in= s.getInputStream(); 
       FileOutputStream  fos=new FileOutputStream("server.jpg"); 
       byte[]buf=new byte[1024]; 
        int len=0; 
        while((len=in.read(buf))!=-1) 
        { 
            fos.write(buf,0,len); 
        } 
        OutputStream  out=s.getOutputStream() ; 
        out.write("上传成功".getBytes()); 
        fos.close(); 
        s.close(); 
        ss.close(); 
    } 
 

package net2;

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;

/*
 * 服务端
 */
public class PicServer {

 public static void main(String[] args) throws Exception {
 
       ServerSocket ss=new ServerSocket(10029);
       Socket s=ss.accept();
       String ip = s.getInetAddress().getHostAddress();
  System.out.println("ip" + ip + "connect...");
       InputStream in= s.getInputStream();
       FileOutputStream  fos=new FileOutputStream("server.jpg");
       byte[]buf=new byte[1024];
  int len=0;
  while((len=in.read(buf))!=-1)
  {
   fos.write(buf,0,len);
  }
  OutputStream  out=s.getOutputStream() ;
  out.write("上传成功".getBytes());
  fos.close();
        s.close();
        ss.close();
 }

}

 


这个服务端有局限性,当A客户端连接上后,被服务端收到,服务端执行具体流程,这时B客户端连接只有等待。
因为服务端还没有处理完A客户端的请求,还有循环回来执行下次accept方法,所以暂时获取不到B客户端对象。
  那么为了让多个客户端并发访问服务端,那么服务端最好将每个客户端封装进单独的线程中,这样

补充:软件开发 , Java ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,