TcpPic多上传

package com.tz.util.screen;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;

import javax.management.RuntimeErrorException;

/**
 * 图片上传
 * 客服端
 * 1.服务端点
 * 2.读取客服端已有的图片数据
 * 3.通过socket输出流将数据发给服务端
 * 4.读取服务端反馈信息
 * 5.关闭
 * @author Administrator
 *
 */

public class TcpPic {

public static void main(String[] args) throws Exception, Exception {
  if (args.length!=1) {
   System.out.println("请选择一个jpg格式图片");
   return;
  }
  File file=new File(args[0]);
  if (!file.exists()&&file.isFile()) {
   System.out.println("该文件有问题");
  }
  if (!file.getName().endsWith(".jpg")) {
   System.out.println("格式错误");
  }
  if (file.length()>1024*1024*5) {
   System.out.println("文件过大");
   return;
  }
  Socket s=new Socket("192.168.1.254",10007);
  
  FileInputStream fis=new FileInputStream("1.bmp");
  OutputStream out=s.getOutputStream();
    byte[] buf=new byte[1024];
  int len=0;
  while ((len=fis.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));
  fis.close();
  s.close();
 }

}
/**
 * 服务端
 * 这个服务端游个局限性,当A客服端连接,被服务端获取,服务端执行具体流程,这时B客服端连接,只有等待,因为服务端还没有处理完A客服端的请求,还没有循环回来执行下次accept方法,所以暂时获取不到B对象
 * 为了让多个客服端同时并发访问服务端,那么服务端最好就是讲每个客服端封装到一个单独的线程中,这样,可以同时处理多个客服端请求
 * 定义线程:
 *  明确每一个客服端要在服务端执行的代码即可,将该代码存入Run方法中
 */
class PicThread implements Runnable{
 private Socket s;
 int count=1;
 PicThread(Socket s){
  this.s=s;
 }
 @Override
 public void run() {
  String ip=s.getInetAddress().getHostAddress();
  try {
   
   System.out.println(ip);
   InputStream in=s.getInputStream();
   //用IP命名,避免覆盖
   File file=new File(ip+"("+(count)+")"+".jpg");
   while(file.exists()){
   
    file=new File(ip+"("+(count++)+")"+".jpg");
   }

FileOutputStream fos=new FileOutputStream(file);
   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();
  } catch (Exception e) {
   throw new RuntimeException(ip+"上传失败");
  }
 }
 
}
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();
  }
//  ss.close();
 }
}

时间: 2024-10-21 11:20:01

TcpPic多上传的相关文章

TcpPic图片上传单机

package com.tz.util.screen; import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.InputStream;import java.io.OutputStream;import java.net.ServerSocket;import java.net.Socket; /** * 图片上传 * 客服端 * 1.服务端点 * 2.读取客服端已有的图片数据 * 3.通过so

jq upload图片上传代码

/* * 图片上传 * */ function postImgData() { $("#addFileInfo input[name='file']").change(function () { console.log($(this).val()) if (!$(this).val()) { return } var fileTyle = $(this).val().split("."); console.log(fileTyle); if (fileTyle[1]

Uploadify/uploadifive上传(中文文档)

Uploadify是一款基于JQuery的优秀的文件/图片上传的插件,有基于Flash和HTML5两种版本. Uploadify/uploadifive主要特点有: 1. 多文件上传 2. 个性化设置 3. 上传进度条显示 4. 拖拽上传(HTML5版本) 官网:http://www.uploadify.com 部署 在部署一个Uploadify实例前,请确保满足最低要求: 1.jQuery 1.4.x 或更高版本 2.Flash Player 9.0.24 或更高版本 3.支持PHP, ASP

GitHub限制上传大于100M的单个大文件

工作中遇到这个问题,一些美术资源..unitypackage文件大于100M,Push到GitHub时被拒绝.意思是Push到GitHub的每个文件的大小都要求小于100M. 搜了一下,很多解决办法只是把这些超过100M的大文件从本地版本库中移除,使得Push可以成功.但这并没有解决如何上传大文件到GitHub的问题. 解决办法是使用Git LFS. 用法参考:http://blog.csdn.net/tyro_java/article/details/53440666 按照以上方法设置好后,就

如何上传代码到github?

如何上传代码到github? 首先你需要一个github账号,所有还没有的话先去注册吧! https://github.com/ 我们使用git需要先安装git工具,这里给出下载地址,下载后一路直接安装即可: https://git-for-windows.github.io/ 1.进入Github首页,点击New repository新建一个项目  2.填写相应信息后点击create即可 Repository name: 仓库名称 Description(可选): 仓库描述介绍 Public,

万家报账平台没有“上传文件”按钮的解决办法

在有的电脑没有"上传文件"的按钮? 第一步:首先检查浏览器设置. 第二步:找到IE的Internet选项菜单,开启菜单栏的根据下列方面找,如下图: 第三步:找到Internet选项后,点击,选择安全选项卡,并点击"自定义级别" 第四步:找到"将文件上载到服务器时包含本地目录路径"选择"启用".然后点击确定关闭IE,重启打开. 第五步:更新浏览器的flash版本.在百度中搜索"flash player官网"即

通过jQuery Ajax使用FormData对象上传文件

转自:http://www.cnblogs.com/labnizejuly/p/5588444.html FormData对象,是可以使用一系列的键值对来模拟一个完整的表单,然后使用XMLHttpRequest发送这个"表单". <form id="uploadForm" enctype="multipart/form-data"> <input id="file" type="file"

WAF——针对Web应用发起的攻击,包括但不限于以下攻击类型:SQL注入、XSS跨站、Webshell上传、命令注入、非法HTTP协议请求、非授权文件访问等

核心概念 WAF Web应用防火墙(Web Application Firewall),简称WAF. Web攻击 针对Web应用发起的攻击,包括但不限于以下攻击类型:SQL注入.XSS跨站.Webshell上传.命令注入.非法HTTP协议请求.非授权文件访问等.

Java企业微信开发_08_JSSDK多图上传

一.本节要点 1.1可信域名 所有的JS接口只能在企业微信应用的可信域名下调用(包括子域名),可在企业微信的管理后台“我的应用”里设置应用可信域名.这个域名必须要通过ICP备案,不然jssdk会配置失败 1.2JS-SDK使用权限签名算法 1.2.1 签名生成规则如下: (1)参与签名的字段包括: noncestr(随机字符串), 有效的jsapi_ticket, timestamp(时间戳), url(当前网页的URL,不包含#及其后面部分) . (2)对所有待签名参数按照字段名的ASCII