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

网络编程(TCP上传图片文件)

2014-01-06 13:24 477 查看
----------------------
ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ----------------------

这个例子是往服务端上传本地的一个图片资源,用socket类实现文件的上传

客户端程序代码:

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 UPLoad {
/**
* @param args
*/

public static void main(String[] args) {
Socket socket=null;

try {
//创建一个socket对象,并且制定上传的ip地址,以及上传的端口号
socket=new Socket("192.168.191.6", 10005);
//创建一个读取本地文件的文件流对象
FileInputStream fileInputStream=new FileInputStream("F:\\图标\\32\\a.jpg");

//用户向服务器端写入数据的流对象
OutputStream outputStream=socket.getOutputStream();

int len=0;
//创建一个缓冲区
byte[] buffer=new byte[1024];

while((len=fileInputStream.read(buffer))!=-1)
{
//写入数据
outputStream.write(buffer, 0, len);
}

//告诉服务端数据已经写入完成
socket.shutdownOutput();

//获取服务端的输入流对象
InputStream inputStream=socket.getInputStream();

byte[] bf=new byte[1024];
//读取服务端反馈的数据,
int num=inputStream.read(bf);
//把信息输出到控制台
System.out.println(new String(bf,0,num));
//关闭流,释放资源
fileInputStream.close();
outputStream.close();

} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}              

}

服务器端的程序实现如下:

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.InputStream;

import java.io.OutputStream;

import java.net.ServerSocket;

import java.net.Socket;

public class Server {
/**
* @param args
*/
public static void main(String[] args) {

ServerSocket serverSocket=null;
try {
//创建一个serverSocket对象,并制定端口号,这里的端口号是和客户端一致的
serverSocket=new ServerSocket(10005);

//获取到请求的socket对象
Socket socket=serverSocket.accept();

//获取流对象,用于读取数据
InputStream inputStream=socket.getInputStream();

//创建一个保存客户端上传的数据的文件流对象
FileOutputStream fileOutputStream=new FileOutputStream("D:\\server.jpg");

int len=0;
byte[] buffer=new byte[1024];

//读取文件数据
while((len=inputStream.read(buffer))!=-1)
{
//保存文件
fileOutputStream.write(buffer, 0, len);
}

OutputStream outputStream=socket.getOutputStream();
//给客户端返回一个信息
outputStream.write("上传成功!".getBytes());

//关闭流,释放资源
fileOutputStream.close();
//关闭客户端
socket.close();
//关闭服务端
serverSocket.close();

} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

}


----------------------
ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ----------------------
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: