Java Socket 传输文件1

服务器端实现代码:

import java.io.*;

import java.net.*;



public class FileServer{

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

//创建文件流用来读取文件中的数据

File file=new File("lishengjie.jpg");

FileInputStream fos=new FileInputStream(file);

//注意这里使用的是字节流,因为图像信息可以用二进制传输



//创建网络服务器接受客户请求

ServerSocket ss=new ServerSocket(3108);

Socket client=ss.accept();



//创建网络输出流并提供数据包装器

OutputStream netOut=client.getOutputStream();

OutputStream doc=new DataOutputStream(new BufferedOutputStream(netOut));



//创建文件读取缓冲区

byte[] buf=new byte[2048];

int num=fos.read(buf);

while(num!=(-1)){//是否读完文件

doc.write(buf,0,num);//把文件数据写出网络缓冲区

doc.flush();//刷新缓冲区把数据写往客户端

num=fos.read(buf);//继续从文件中读取数据

}

fos.close();

doc.close();

}

}



客户方实现代码:

import java.io.*;

import java.net.*;



public class FileClient{

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

//使用本地文件系统接受网络数据并存为新文件

File file=new File("newFile.jpg");

file.createNewFile();

RandomAccessFile raf=new RandomAccessFile(file,"rw");



// 通过Socket连接文件服务器

Socket server=new Socket(InetAddress.getLocalHost(),3108);



//创建网络接受流接受服务器文件数据

InputStream netIn=server.getInputStream();

InputStream in=new DataInputStream(new BufferedInputStream(netIn));



//创建缓冲区缓冲网络数据

byte[] buf=new byte[2048];

int num=in.read(buf);



while(num!=(-1)){//是否读完所有数据

raf.write(buf,0,num);//将数据写往文件

raf.skipBytes(num);//顺序写文件字节

num=in.read(buf);//继续从网络中读取文件

}

in.close();

raf.close();

}

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值