心得15--网络编程6-图片等二进制文件的上传与输出
来源:互联网 发布:js获取iframe中的元素 编辑:程序博客网 时间:2024/06/03 19:55
1. 先说一个简单的案例
客户端:
package com.TcpJpg;
importjava.io.FileInputStream;
importjava.io.InputStream;
importjava.io.OutputStream;
importjava.net.Socket;
publicclass JpgClient {
/**
* 客户端:图片上传
* @param args
*/
publicstaticvoid main(String[]args) {
Socket s = null;
FileInputStream fi = null; //文件输入流从外面读文件数据
try {
s = new Socket("192.168.49.200",8000);
fi = new FileInputStream("d:\\1.jpg");
OutputStream out =s.getOutputStream(); // 通过socket获取输出流,进行信息通信
byte[] buf =newbyte[1024];
int len = 0;
while((len=fi.read(buf))!=-1) {
out.write(buf,0,len);
}
s.shutdownOutput();
InputStream in = s.getInputStream();
byte[] b =newbyte[1024];
System.out.println(new String(b,0,in.read(b)));
} catch (Exception e) {
e.printStackTrace();
}finally {
try {
s.close();
fi.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
服务器端:
packagecom.TcpJpg;
importjava.io.FileOutputStream;
importjava.io.InputStream;
importjava.io.OutputStream;
importjava.net.ServerSocket;
importjava.net.Socket;
publicclass JpgServer {
/**
* 服务器端:下载图片
*@param args
*/
public static void main(String[] args) {
ServerSocket ss = null;
Socket s = null;
FileOutputStream fo = null;
try {
ss = new ServerSocket(8000);
s = ss.accept();
InputStream in = s.getInputStream();
System.out.println(s.getInetAddress().getHostAddress()+"已连接");
fo = newFileOutputStream("d:\\girl.jpg");
byte[] buf = new byte[1024];
int len = 0;
while((len=in.read(buf))!=-1) {
fo.write(buf,0,len);
}
OutputStream out = s.getOutputStream();
out.write("上传成功!".getBytes()); // 将传进来的字符串转换成二进制保存
} catch (Exception e) {
e.printStackTrace();
}finally {
try {
fo.close();
s.close();
ss.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
2. 一个可以键盘输入、无限上传的案例
客户端:
packagecom.TcpJpg;
importjava.io.File;
importjava.io.FileInputStream;
importjava.io.InputStream;
importjava.io.OutputStream;
importjava.net.Socket;
publicclass JpgClient1 {
/**
* 客户端:图片上传
*@param args
*/
public static void main(String[] args) {
try {
if(args.length==0) { //如果参数恒等于0则表示没有传入参数即没有指定文件
System.out.println("请指定一个jpg文件");
return;
}
File f = new File(args[0]);
Socket s = newSocket("192.168.49.200",8000);
FileInputStream fi = newFileInputStream(f); //文件输入流从外面读文件数据
OutputStream out = s.getOutputStream(); // 通过socket获取输出流,进行信息通信
byte[] buf = new byte[1024];
int len = 0;
while((len=fi.read(buf))!=-1) {
out.write(buf,0,len);
}
s.shutdownOutput();
InputStream in = s.getInputStream();
byte[] b = new byte[1024];
System.out.println(newString(b,0,in.read(b)));
s.close();
fi.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
服务器端:
packagecom.TcpJpg;
importjava.io.File;
importjava.io.FileOutputStream;
importjava.io.IOException;
importjava.io.InputStream;
importjava.io.OutputStream;
importjava.net.ServerSocket;
importjava.net.Socket;
publicclass JpgServer1 {
/**
* 服务器端:下载图片
*@param args
*@throws IOException
*/
public static void main(String[] args) throwsIOException {
ServerSocket ss = new ServerSocket(8000);
while (true) {
Socket s = ss.accept();
new Thread(new JpgThread(s)).start();
}
}
}
classJpgThread implements Runnable {
private Socket s;
public JpgThread(Socket s) {
this.s = s;
}
public void run() {
int count = 1; // 设置一个计数器,使同一个客户端即IP能传多个文件
try {
String ip =s.getInetAddress().getHostAddress();
System.out.println(ip+"已连接");
InputStream in = s.getInputStream();
File dir = newFile("D:\\image"); //指定的客户端上传后的文件保存在该文件夹下
File f = new File(dir, ip +"(" + count + ").vbs");
while (f.exists()) { //判断一种条件:如果文件不存在则加一返回保存新文件
f = new File(dir, ip + "(" + (count++)+ ").vbs");
}
FileOutputStream fo = newFileOutputStream(f);
byte[] buf = new byte[1024];
int len = 0;
while ((len = in.read(buf)) != -1) {
fo.write(buf, 0, len);
}
OutputStream out = s.getOutputStream();
out.write("上传成功!".getBytes());// 将传进来的字符串转换成二进制保存
fo.close();
s.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
- 心得15--网络编程6-图片等二进制文件的上传与输出
- 心得14--网络编程5-Tcp文件上传与输出
- 分享二进制文件读取的编程心得
- 网络编程上传图片
- java.io流操作文本文件与图片、pdf等二进制文件的区别
- 网络编程之上传图片
- 图片与二进制文件的互转
- 编程修改BIN等二进制文件
- 编程修改BIN等二进制文件
- 七牛图片上传的使用心得
- 图片、文件等上传与下载
- 使用Tcp网络编程上传图片
- 使用Tcp网络编程上传图片。
- 黑马程序员-网络编程-上传图片
- JAVA 网络编程(TCP 上传图片)
- 网络编程(TCP上传图片文件)
- Java基础-网络编程(TCP-上传图片)
- 网络编程-上传图片并给出反馈
- 电影记录管理系统2[增删改查]
- 通过url打开app的方法
- position:fixed
- javascript设置cookie值
- C#操作MySql,PostgreSQL
- 心得15--网络编程6-图片等二进制文件的上传与输出
- Python文件处理和Numpy数组处理
- 我原来如此
- SGU 223 Little Kings
- Qt拷贝文件、文件夹(QFile::copy)
- Extjs在iframe里实现页面跳转
- 通过JDBC操纵Oracle LOB字段
- 在windows下的虚拟机中安装linux
- UIScrollView的简单使用