import java.io.BufferedInputStream;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.net.Socket;
import java.net.UnknownHostException;
public class FileClient {
private String ip = "localhost";// 设置成服务器IP
private int port = 10000;
private String sendMessage = "C:\\1.gif";
Socket socketConnection = null;
DataOutputStream sendMsg = null;
DataInputStream getMsg = null;
public static void main(String arg[]) throws Exception {
FileClient clientTest = new FileClient();
clientTest.setUpConnection();
clientTest.getMessage();
clientTest.sendMessage();
}
public void setUpConnection() {
try {
socketConnection = new Socket(ip, port);
sendMsg = new DataOutputStream(socketConnection.getOutputStream());
getMsg = new DataInputStream(new BufferedInputStream(
socketConnection.getInputStream()));
} catch (UnknownHostException e) {
System.out.println("连接错误: 未知主机 " + sendMessage + ":" + port);
} catch (IOException e) {
System.out.println("连接时出错: " + e);
}
}
private void sendMessage() throws Exception {
try {
File fi = new File(sendMessage);
System.out.println("文件长度:" + (int) fi.length());
DataInputStream fis = new DataInputStream(new BufferedInputStream(
new FileInputStream(sendMessage)));
sendMsg.writeUTF(fi.getName());
sendMsg.flush();
sendMsg.writeLong((long) fi.length());
sendMsg.flush();
int bufferSize = 8192;
byte[] buf = new byte[bufferSize];
while (true) {
int read = 0;
if (fis != null) {
read = fis.read(buf);
}
if (read == -1) {
break;
}
sendMsg.write(buf, 0, read);
}
sendMsg.flush();
fis.close();
// 注意关闭socket链接,不然服务端会等待客户端的数据过来,
// 直到socket超时,导致数据不完整。
socketConnection.close();
System.out.println("文件传输完成");
} catch (Exception e) {
e.printStackTrace();
if (sendMsg != null)
sendMsg.close();
throw e;
} finally {
}
}
private void getMessage() throws Exception {
try {
getMsg = new DataInputStream(new BufferedInputStream(
socketConnection.getInputStream()));
System.out.println(getMsg.readUTF());
} catch (Exception e) {
e.printStackTrace();
if (getMsg != null)
getMsg.close();
System.out.print("接收消息缓存错误\n");
throw e;
}
}
}
分享到:
相关推荐
这个"文件上传小例子"是你在学习过程中的一次实践,它可能涉及了基本的文件处理和网络传输原理。下面我们将深入探讨相关的知识点。 首先,文件上传涉及到前端和后端两个部分。前端通常是用户与应用交互的地方,它...
在这个"android4.4WebVeiw文件上传小例子"中,我们将探讨如何在WebView中实现文件选择和上传。 首先,我们需要在AndroidManifest.xml文件中添加必要的权限。文件上传通常涉及到读取存储设备,因此需要`READ_...
通过这个小例子,你可以了解到如何在实际项目中使用SmartUpload组件来处理文件上传。不过,需要注意的是,虽然SmartUpload简化了开发过程,但它并不包含所有安全特性,如防止文件覆盖、检查病毒等。因此,在实际部署...
文件上传的例子(含源码),文件上传 文件上传的例子(含源码),文件上传 文件上传的例子(含源码),文件上传 文件上传的例子(含源码),文件上传 文件上传的例子(含源码),文件上传 文件上传的例子(含源码)...
在这个"Servlet 文件上传下载例子"中,我们将探讨如何使用Servlet实现文件的上传和下载功能,这对于构建一个简单的图片文件服务器至关重要。 1. **文件上传** - **MultipartRequest**: 在Servlet中,处理文件上传...
在这个"C# .NET FileUpload 多文件上传例子"中,我们将探讨两种主要的方法,帮助你理解和掌握这一关键功能。 首先,我们要知道ASP.NET中的`<asp:FileUpload>`控件是实现文件上传的核心组件。它可以允许用户从本地...
【上传文件的AJAX小例子】是一个通过HTML5新特性实现的文件上传示例,它结合了AJAX技术,提供了一种无需刷新页面即可完成文件上传的交互方式。在这个例子中,IBM展示了一种创新的文件上传解决方案,尤其是利用了...
这个例子提供了一个简单的文件上传功能,可以通过集成开发环境MyEclipse进行演示。在这个过程中,用户可以选择本地文件并将其上传到服务器上的指定目录——在这种情况下是工程的发布目录下的`upload`文件夹。 首先...
这个"多文件上传例子及说明"的压缩包提供了一个示例,教你如何实现一次性上传一个文件夹内的所有文件。以下是对这个主题的详细解释。 首先,我们需要理解多文件上传的原理。在Web开发中,通常使用HTML5的`...
总的来说,uploadify多文件上传例子代码通过结合前端的uploadify插件和后端的servlet处理,实现了在jsp环境下的多文件上传功能。它简化了开发流程,提供了丰富的自定义选项,是Web开发中一个实用的工具。在实际项目...
3. `max_execution_time`: 设置脚本最大执行时间,避免因大文件上传导致服务器超时。 确保这些值足够大,以便能处理预期的大文件。例如,可以将它们设置为: ``` post_max_size = 50M upload_max_filesize = 48M ...
本示例中的"fileUpload文件上传组件例子"提供了一个自定义实现的文件上传组件,旨在帮助开发者理解并掌握这一关键功能的实现方式。 首先,我们需要了解文件上传的基本原理。在HTML中,`<input type="file">`标签...
【标题】:“文件上传功能例子工程” 在现代Web应用程序中,文件上传功能是不可或缺的一部分,它允许用户将本地计算机上的文件传输到服务器。本“文件上传功能例子工程”旨在提供一个详细的操作指南,演示如何使用...
标题 "jquery文件上传例子(两种方式)" 涉及到的是使用jQuery库进行文件上传的实践,这在Web开发中是非常常见的需求。jQuery是JavaScript的一个轻量级库,它简化了DOM操作、事件处理和Ajax交互等任务。在这个示例中,...
本篇文章将聚焦于"Ext上传文件例子(入门)",通过一个简单的实例来讲解如何在ExtJS框架下实现文件上传功能。 首先,我们要理解文件上传的基本原理。在Web应用中,文件上传通常依赖于HTML的`<input type="file">`元素...
【NeatUpload 上传文件例子】是一个针对Visual Studio 2008的项目示例,主要展示了如何使用NeatUpload库来实现大文件上传的功能。NeatUpload是一个强大的ASP.NET控件,它允许用户在web应用程序中上传大文件,同时...
在这个例子中,我们将深入探讨如何利用ASPUpload组件来实现多文件上传、获取表单数据、自定义保存路径、设置上传大小限制以及文件类型限制。 首先,`EVUploadSample.asp` 是主程序文件,它包含了ASPUpload组件的...
在本“swf 文件上传例子”中,我们将探讨如何实现一个基于SWF的多文件上传功能,这个功能允许用户在Web应用中一次性上传多个文件。 在Web开发中,文件上传是一项常见需求,它可以让用户上传图片、文档等各种类型的...
在这个"struts1文件上传的例子"中,我们将深入探讨如何在Struts1框架下实现文件上传的功能。 首先,文件上传在Web开发中是一个常见的需求,例如用户可能需要上传图片、文档或其他类型的文件。在Struts1中,这通常...
在“struts2文件上传例子.rar”这个项目中,开发者已经使用Struts2.0框架实现了一个简单的文件上传功能。MyEclipse 6.6是一个集成开发环境,支持Java EE项目开发,可以直接导入该项目进行运行和调试。 首先,我们...