黑马程序员技术交流社区

标题: TCP 多个客服端并发访问服务器传送图片 [打印本页]

作者: 草上飞    时间: 2012-11-9 17:49
标题: TCP 多个客服端并发访问服务器传送图片
/*\
为了可以让多个客服同时并发访问服务端
那么服务端最好就是将每个客服端封装成一个单独的 线程中,这样就可以同时处理多个客服端
*/
import java.io.*;
import java.net.*;
//第四个客户
class  LoadPicClien4
{
public static void main(String[] args) throws Exception
{
  if(args.length!=1)
  {
  System.out.println("请选择一个jpg文件");
  return ;
  }
  File file=new File(args[0]);
  if(!(file.isFile()&&file.exists()))
  {
  System.out.println("该文件不存在");
  return;
  }
  if(!file.getName().endsWith(".jpg"))
  {
  System.out.println("该文件不是jpg文件,请从新上传");
  return;
  }
  if(file.length()>1024*1024*6)
  {
  System.out.println("请上传6M以内的文件");
  return;
  }
  Socket s=new Socket("192.168.2.71",10009);
  FileInputStream fis=new FileInputStream(file);
  OutputStream os=s.getOutputStream();//从套接字获取输出流
  byte[] by=new byte[1024];
  int len=0;
  while ((len=fis.read(by))!=-1)
  {
  os.write(by,0,len);
  }
  s.shutdownOutput();
  InputStream is=s.getInputStream();//从套接字获取输入流
  byte[] bys=new byte[1024];//创建一个缓冲区
  int lens=is.read(bys);
  System.out.println(new String(bys,0,lens));
  s.close();
  fis.close();
}
}
//第三个客户
class  LoadPicClien3
{
public static void main(String[] args) throws Exception
{
  if(args.length!=1)
  {
  System.out.println("请选择一个jpg文件");
  return ;
  }
  File file=new File(args[0]);
  if(!(file.isFile()&&file.exists()))
  {
  System.out.println("该文件不存在");
  return;
  }
  if(!file.getName().endsWith(".jpg"))
  {
  System.out.println("该文件不是jpg文件,请从新上传");
  return;
  }
  if(file.length()>1024*1024*6)
  {
  System.out.println("请上传6M以内的文件");
  return;
  }
  Socket s=new Socket("192.168.2.71",10009);
  FileInputStream fis=new FileInputStream(file);
  OutputStream os=s.getOutputStream();//从套接字获取输出流
  byte[] by=new byte[1024];
  int len=0;
  while ((len=fis.read(by))!=-1)
  {
  os.write(by,0,len);
  }
  s.shutdownOutput();
  InputStream is=s.getInputStream();//从套接字获取输入流
  byte[] bys=new byte[1024];//创建一个缓冲区
  int lens=is.read(bys);
  System.out.println(new String(bys,0,lens));
  s.close();
  fis.close();
}
}
//第二个客户
class  LoadPicClien2

public static void main(String[] args) throws Exception
{
  if(args.length!=1)
  {
  System.out.println("请选择一个jpg文件");
  return ;
  }
  File file=new File(args[0]);
  if(!(file.isFile()&&file.exists()))
  {
  System.out.println("该文件不存在");
  return;
  }
  if(!file.getName().endsWith(".jpg"))
  {
  System.out.println("该文件不是jpg文件,请从新上传");
  return;
  }
  if(file.length()>1024*1024*6)
  {
  System.out.println("请上传6M以内的文件");
  return;
  }
  Socket s=new Socket("192.168.2.71",10009);
  FileInputStream fis=new FileInputStream(file);
  OutputStream os=s.getOutputStream();//从套接字获取输出流
  byte[] by=new byte[1024];
  int len=0;
  while ((len=fis.read(by))!=-1)
  {
  os.write(by,0,len);
  }
  s.shutdownOutput();
  InputStream is=s.getInputStream();//从套接字获取输入流
  byte[] bys=new byte[1024];//创建一个缓冲区
  int lens=is.read(bys);
  System.out.println(new String(bys,0,lens));
  s.close();
  fis.close();
}
}
//第一个客户
class  LoadPicClien1
{
public static void main(String[] args) throws Exception
{
  if(args.length!=1)
  {
  System.out.println("请选择一个jpg文件");
  return ;
  }
  File file=new File(args[0]);
  if(!(file.isFile()&&file.exists()))
  {
  System.out.println("该文件不存在");
  return;
  }
  if(!file.getName().endsWith(".jpg"))
  {
  System.out.println("该文件不是jpg文件,请从新上传");
  return;
  }
  if(file.length()>1024*1024*6)
  {
  System.out.println("请上传6M以内的文件");
  return;
  }
  Socket s=new Socket("192.168.2.71",10009);
  FileInputStream fis=new FileInputStream(file);
  OutputStream os=s.getOutputStream();//从套接字获取输出流
  byte[] by=new byte[1024];
  int len=0;
  while ((len=fis.read(by))!=-1)
  {
  os.write(by,0,len);
  }
  s.shutdownOutput();
  InputStream is=s.getInputStream();//从套接字获取输入流
  byte[] bys=new byte[1024];//创建一个缓冲区
  int lens=is.read(bys);
  System.out.println(new String(bys,0,lens));
  s.close();
  fis.close();
}
}
class ThreadLoad implements Runnable
{
private Socket s;
ThreadLoad(Socket s)
{
this.s=s;
}
public void run()
{
  int count=1;
  String ip=s.getInetAddress().getHostAddress();  
try
{
  InputStream is=s.getInputStream();//从套接字获取输入流
  File file=new File(ip+"("+(count)+")"+".jpg");
  while(file.exists())
    file=file=new File(ip+"("+(count++)+")"+".jpg");
  FileOutputStream fos=new FileOutputStream(file);
  byte[] by=new byte[1024];
  int len=0;
  while ((len=is.read(by))!=-1)
  {
   fos.write(by,0,len);
  }
  OutputStream out =s.getOutputStream();
  out.write("上传成功".getBytes());     
  s.close();
  
  fos.close();
}
catch (Exception e)
{
  throw new RuntimeException("上传失败");
}


}

}
class  LoadPicServer
{
public static void main(String[] args) throws Exception
{
  ServerSocket ss=new ServerSocket(10009);
  while (true)
  {
  Socket s=ss.accept();//获取所有接收到的 数据源
  new Thread(new ThreadLoad(s)).start();//没收到一个客服端,请求就创建一个线程
  }
  
}
}






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2