本帖最后由 莫道荣 于 2013-3-24 18:52 编辑
- import java.io.*;
- import java.net.*;
- class UploadPicDemo
- {
- public static void main(String[] args) throws Exception
- {
- Socket s=new Socket("127.0.0.1",10001);//创建客户端通信套接字,端口号为10001
- File f=new File("D:\\Documents\\Pictures\\me.jpg");//把客户端选择的文件封装成file对象
- //判断客户选择的文件是否合法
- if (!f.exists()&&!f.isFile())
- {
- System.out.println("选择的文件不存在或不是文件,请重新选择");
- return;
- }
- if (f.length()>1024*1024*2)
- {
- System.out.println("选择的文件太大");
- return;
- }
- FileInputStream in=new FileInputStream(f);//创建文件流
- OutputStream out=s.getOutputStream(); //获取套接字输出流
-
- byte [] buf=new byte[1024*1024*2];
- int len=0;
- while ((len=in.read(buf))!=-1)
- {
- System.out.println(new Integer(len).toString());//获取文件的实际长度
- out.write(buf,0,len);//向服务端输出数据
- }
- s.shutdownInput() ;//告诉服务端文件已经到了结尾
- byte [] buff=new byte[1024];
- InputStream br=s.getInputStream();
- int num=br.read(buff);//获取服务端返回的信息
- System.out.println(new String(buff,0,num));
- in.close();
- s.close();
- }
- }
复制代码 客户端代码,读取本地的一张图片发送给服务端- import java.io.*;
- import java.net.*;
- class UploadPicServerDemo
- {
- public static void main(String[] args) throws Exception
- {
- ServerSocket ss=new ServerSocket(10001);//创建服务端通信套接字,侦听10001端口号
- Socket s=ss.accept();//接收客户端套接字
- System.out.println(s.getInetAddress().getHostName());
- byte [] buf=new byte[1024*1024*2];//定义缓冲区
- InputStream in=s.getInputStream();//获取客户端套接字输入流
- FileOutputStream out =new FileOutputStream("server.jpg");
- int len;
- while ((len=in.read(buf))!=-1)//把客户端传过来的数据存到缓冲区里
- {
- out.write(buf,0,len);//写出
- }
- System.out.println(new Integer(len).toString());
- OutputStream bw=s.getOutputStream();
- bw.write("上传成功".getBytes());
- out.close();
- s.close();
-
- }
-
- }
复制代码 运行之后报了个图1的错,但是服务端的文件却创建了,大小和客户端上传的一样大,但是打开还原补了
|
|