快速业务通道

Java小例子:通过Socket发送和接收文件 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-17
ALUE} 182. * 183. * @param hostname 接收端主机名或 IP 地址 184. * @param port 接收端端口号 185. * @param filepath 文件路径 186. * 187. * @throws IOException 如果读取文件或发送失败 188. */ 189. public void sendFile(String hostname, int port, String filepath) throws IOException { 190. File file = new File(filepath); 191. FileInputStream is = new FileInputStream(filepath); 192. 193. Socket socket = new Socket(hostname, port); 194. OutputStream os = socket.getOutputStream(); 195. 196. try { 197. int length = (int) file.length(); 198. System.out.println("发送文件:" + file.getName() + ",长度:" + length); 199. 200. // 发送文件名和文件内容 201. writeFileName(file, os); 202. writeFileContent(is, os, length); 203. } finally { 204. os.close(); 205. is.close(); 206. } 207. } 208. 209. // 输出文件内容 210. private void writeFileContent(InputStream is, OutputStream os, int length) throws IOException { 211. // 输出文件长度 212. os.write(i2b(length)); 213. 214. // 输出文件内容 215. byte[] buffer = new byte[4096]; 216. int size; 217. while ((size = is.read(buffer)) != -1) { 218. os.write(buffer, 0, size); 219. } 220. } 221. 222. // 输出文件名 223. private void writeFileName(File file, OutputStream os) throws IOException { 224. byte[] fn_bytes = file.getName().getBytes(); 225. 226. os.write(i2b(fn_bytes.length)); // 输出文件名长度 227. os.write(fn_bytes); // 输出文件名 228. } 229.}

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号