以前没写过socket传输文件,上网查了一些资料。写了一个,哪里写的不对请大家多多指教。
// 服务端代码是用的mina写的
// 其实用socket也一样,只是关建字不一样而且己
public static void main(String[] args){
File f = null;
FileInputStream fin = null;
FileChannel fc = null;
String[] datas = data.split(",");
String fileName = args[1]; // 文件名
IoSession session = getSession();
try {
f = new File("D:\\"+fileName);
if(!f.isFile()){ // 判断是否找到文件
session.write("File does not exist!");
return null;
}
fin = new FileInputStream(f); // 读文件流
fc = fin.getChannel(); // 得到文件流通道
while (true) {
ByteBuffer bb = ByteBuffer.allocate(1024);
int i = fc.read(bb);
if (i < 0) {
break;
}
IoBuffer ib = IoBuffer.wrap(bb);
ib.flip();
session.write(ib);
// 不间断发送会导致buffer异常
Thread.sleep(5);
}
fc.close();
fin.close();
} catch (Exception e) {
e.printStackTrace();
} finally{
session.close(false);
}
}
public static void main(String[] args) {
Socket s = null;
BufferedInputStream bis = null;
BufferedOutputStream bos = null;
OutputStream os = null;
try {
s = new Socket("localhost", 6000);
bis = new BufferedInputStream(s
.getInputStream());
bos = new BufferedOutputStream(new FileOutputStream("D:\\test.rar"));
os = s.getOutputStream();
os.write("%%Cmd,Cmd.rar,!!".getBytes());// 发送指令 要求服务端发送文件为 Cmd.rar
byte[] buf = new byte[8192];
int len = 0;
while ((len = bis.read(buf, 0, 8192)) != -1) {
bos.write(buf, 0, len);
}
bos.flush();
} catch (IOException e) {
e.printStackTrace();
}finally{
try {
bos.close();
bis.close();
s.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
分享到:
相关推荐
c# socket 传输文件,c# socket 传输文件,c# socket 传输文件
VC++基于socket传输文件服务端代码,并且加入了可配置选项,根据配置文件读取相关配置
socket传输文件实例 socket传输文件实例 socket传输文件实例
发送端可以不停的发送新文件,接收端可以不停的接收新文件。 例如:发送端输入:e:\visio.rar,接收端会默认保存为 e:\new_visio.rar,支持多并发,具体实现如下; 接收端: 方法一: #-*- coding: UTF-8 -*- ...
Socket传输大文件(发送与接收源码):通过Socket服务端与客户端的通信,实现大文件之间传输
Java程序作为服务器端,C++程序作为客户端。 实现功能:客户端传输文件到服务器端,服务器端传输文件到客户端。 开发工具:Eclipse(JDK1.7) VS2008
C#Socket文件传输,将文件名和文件保存到一个byte[]中传输,再通过解析获取文件名和文件保存到本地文件夹中
C#socket 大文件传输 分段传输 C#DEMO
本篇文章主要介绍了python:socket传输大文件示例,具有一定的参考价值,有兴趣的可以了解一下,
java-socket传输文件-图片-源码 我试过本地和局域网传输文件。 按理说,网络传输也是可以的。 效率可以。还可以写成线程操作
在linux下的c/c++实现的socket文件传输
c++编写的 MFC socket 文件传输 编译通过 可直接运行
VC++下socket传输文件的完整demo以及源码
利用c语言写的文件传输代码,客户端跟服务器传,有校验包,能用
C#编程socket传输文件(socket编程),socket编程进深。
VC++基于socket传输文件服务端和客户端代码,并且加入配置文件
使用CSocket类传输文件(阻塞),仅供学习参考
其中Model为模型项目,SocketProtocol为传输协议,Utility为帮助类 本案例通过一个基本协议,使用socket传送数据,能够达到大量数据发送不发生粘包等常见现象,在我本机测试,一次性能够传送的数据包大小为系统一次性能够...
android Socket文件传输,对于几十M的文件都可以很好的传输
用socket传输文件,有兴趣的可以研究一下。