以前没写过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类进行文件传输,包括文件的发送和接收,以及在此过程中可能遇到的关键技术和注意事项。 1. **Socket基本概念** - Socket是基于TCP/IP协议族的通信接口,它允许应用程序...
"VC++基于socket传输文件服务端代码"是一个项目,旨在帮助开发者了解如何构建一个能够接收客户端文件上传的服务端应用程序。 首先,让我们深入理解VC++和Socket的基础。VC++(Visual C++)是微软开发的一款集成开发...
在这个特定的项目中,我们看到“socket传输文件”的应用,涉及到Java和C++两种编程语言,分别用于构建服务器端和客户端。接下来,我们将深入探讨这个场景中的关键知识点。 1. **Socket编程基础**: Socket是网络...
在这个"socket传输文件实例"中,我们将深入探讨如何利用Socket在不同计算机之间交换文件。Socket提供了低级别的、面向连接的、双向通信协议,是TCP/IP协议族的一部分。下面我们将详细讲解相关知识点。 一、Socket...
发送端可以不停的发送新文件,接收端可以不停的接收新文件。 例如:发送端输入:e:\visio.rar,接收端会默认保存为 e:\new_visio.rar,支持多并发,具体实现如下; 接收端: 方法一: #-*- coding: UTF-8 -*- ...
"vcSocketfile.rar_VC文件传输_socket传输文件_socket文件传输_vc 多线程_多线程传输"这个压缩包文件提供了使用VC++(Visual C++)实现的多线程Socket文件传输的示例代码。下面我们将详细探讨这个主题中的关键知识点...
### Socket传输文件示例知识点详解 #### 一、概述 在计算机网络中,Socket编程是一种常用的通信技术,用于实现不同主机间的进程间通信。本文档介绍了一个基于Windows平台的Socket文件传输程序,该程序实现了文件的...
在"Socket传输大文件"的场景中,我们通常会构建一个服务器端(SocketServer)来监听特定端口,等待客户端(SocketClient)连接。一旦客户端连接成功,双方就可以通过Socket进行数据的收发。在这个过程中,由于大文件...
Java Socket传输文件是一种基于TCP/IP协议的网络通信方式,它允许两台计算机通过网络进行双向通信,从而实现数据的交换。在这个场景中,我们利用Java的Socket API来实现在客户端(Client)和服务器端(Server)之间...
在本示例中,我们关注的是"VC++下socket传输文件的完整demo以及源码",这表明我们将探讨如何在Microsoft Visual C++环境下利用Socket API进行文件的传输。 首先,让我们了解Socket的基本概念。Socket是操作系统提供...
总结来说,这个项目通过C语言实现了基于TCP/IP的Socket文件传输,展示了网络通信的基本原理和C/S架构的工作流程,对于理解网络编程和文件传输具有很好的实践意义。在实际应用中,这样的技术可以被广泛应用于文件共享...
以下是关于Python Socket传输大文件的核心知识点: 1. **Socket基本概念**: - Socket是网络通信中的一个端点,它允许两台计算机通过网络交换数据。 - Python中的`socket`模块提供了创建和操作Socket的接口。 2....
本示例主要探讨如何使用C#的Socket类进行文件的传输,包括文件名和文件内容的同步发送与接收。这里我们将详细讲解实现这一功能的关键步骤和相关知识点。 首先,了解Socket的工作原理。Socket是TCP/IP协议栈的一部分...
在Linux环境下,C++实现基于Socket的文件传输是一项常见的任务,尤其在分布式系统、网络编程以及服务器开发中。Socket是网络通信的一种接口,它允许进程间通过网络进行数据交换。本篇文章将深入探讨如何利用C++在...
标题"“MFC socket 文件传输”"指出,这个项目或教程主要关注如何使用MFC库来构建一个文件传输应用,该应用利用Socket技术进行文件的发送和接收。这通常涉及以下知识点: 1. **MFC基础**:理解MFC框架的基本结构,...
本篇文章将深入探讨“网口Socket传输文件”的核心概念,主要包括TCP和UDP两种主要的套接字类型。 首先,我们来看TCP(Transmission Control Protocol)套接字,也被称为流式套接字。TCP是一种面向连接的协议,确保...
本篇文章将详细讲解如何使用C#的Socket通过TCP协议进行文件传输。 首先,我们需要了解TCP的基本特性。TCP保证了数据的顺序传输和错误检查,通过三次握手建立连接,四次挥手断开连接。它提供了一种可靠的数据传输...
在Android设备间进行文件互传时,我们通常选择TCP Socket,因为它能确保数据在传输过程中的顺序性和完整性。以下是使用TCP Socket进行文件传输的基本步骤: 1. **建立连接**:客户端设备创建一个Socket,并向服务器...
在本教程中,我们将探讨如何使用MFC中的CSocket类进行文件传输,这是一个阻塞模式的通信方式,适用于简单且同步的数据交换场景。 ### SOCKET基础 Socket,又称为套接字,是网络通信的基本单元。它允许两个网络应用...
本主题聚焦于"C语言socket通讯TXT文件传输",它涉及到客户端和服务器端的编程,以及通过IP地址进行文件的定位和传输。下面将详细阐述相关知识点。 1. **Socket编程**:Socket是网络编程的基础,它提供了一种进程间...