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

---------------------- 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培训、期待与您交流! ----------------------
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值