您的位置:首页 > 理论基础 > 计算机网络

使用TCP从客户端上传图片到服务器端

2015-10-27 19:40 525 查看
客户端:

package upload.tcp;

import java.io.FileInputStream;

import java.io.IOException;

import java.io.InputStream;

import java.io.OutputStream;

import java.net.Socket;

import java.net.UnknownHostException;

/*

* 从客户端上传图片到服务器端

*/

public class TCPClient {

/**

* @param args

* @throws IOException

* @throws UnknownHostException

*/

public static void main(String[] args) throws UnknownHostException, IOException {

// TODO Auto-generated method stub

//1.创建客户端Socket对象

Socket s=new Socket("192.168.166.193",10008);

//2.读取要上传的图片。源:硬盘。

InputStream is=new FileInputStream("d://dog.jpg");

//3.将图片发送到服务器端。目的:Socket流

OutputStream out=s.getOutputStream();

byte [] bt=new byte[1024];

int len=0;

while((len=is.read(bt))!=-1)

{

out.write(bt,0,len);

}

s.shutdownOutput();

//4.接收服务器端返回的数据。源:Socket流

InputStream isIn=s.getInputStream();

byte [] btIn=new byte[1024];

int lenIn=isIn.read(btIn);

String text=new String(btIn,0,lenIn);

System.out.println(text);

//告诉服务器端,上传结束

//关闭资源

is.close();

s.close();

}

}

服务器端:

package upload.tcp;

import java.io.File;

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.InputStream;

import java.io.OutputStream;

import java.io.PrintWriter;

import java.net.ServerSocket;

import java.net.Socket;

public class TCPServer {

/**

* @param args

* @throws IOException

*/

public static void main(String[] args) throws IOException {

// TODO Auto-generated method stub

//1.创建服务器端的ServerSocket对象

ServerSocket ss=new ServerSocket(10008);

//2.获取Socket对象

Socket s=ss.accept();

String ip=s.getInetAddress().getHostAddress();

System.out.println(ip+"connected...");

//3.接收客户端传来的图片。源:Socket流

InputStream in=s.getInputStream();

//4.存放到服务器端的硬盘。目的:硬盘

File dir=new File("d:\\pic");

if(!dir.exists()) dir.mkdirs();

File file=new File(dir,ip+".jpg");

FileOutputStream os=new FileOutputStream(file);

byte [] bt=new byte[1024];

int len;

while((len=in.read(bt))!=-1)

{

os.write(bt, 0, len);

}

//5.告诉客户端上传成功。目的:Socket流

OutputStream out=s.getOutputStream();

out.write("上传成功".getBytes());

//关闭资源

in.close();

s.close();

ss.close();

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: