版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1.Socket的Util辅助类import .throws Exceptionexception;import java.io.*;/*/public void CreateConnection() throws Exception try socket = new Socket(ip, port); catch (Exception e) e.printStackTrace(); if (socket != null)socket.close();throw e; finally /发送消息public void sendMessage(String sendMessage) throws
2、 Exception try out = new DataOutputStream(socket.getOutputStream(); if (sendMessage.equals(Windows) out.writeByte(0 x1);* 2.socket 的 Util 辅助类* author willson*/public class ClientSocket private String ip;private int port;private Socket socket = null;DataOutputStream out = null;DataInputStream getMess
3、ageStream = null; public ClientSocket(String ip, int port) this.ip = ip;this.port = port;/*创建socket连接 out.flush(); return;if (sendMessage.equals(Unix) out.writeByte(0 x2);out.flush(); return;if (sendMessage.equals(Linux) out.writeByte(0 x3);out.flush(); else out.writeUTF(sendMessage); out.flush(); c
4、atch (Exception e) e.printStackTrace(); if (out != null) out.close();throw e; finally /接受消息public DataInputStream getMessageStream() throws Exception try getMessageStream = new DataInputStream(new BufferedInputStream( socket.getInputStream();return getMessageStream; catch (Exception e) e.printStackT
5、race(); if (getMessageStream != null)getMessageStream.close(); throw e; finally /关闭连接public void shutDownConnection() try if (out != null) out.close();if (getMessageStream != null)getMessageStream.close();if (socket != null) socket.close(); catch (Exception e) 2.Socket服务器端import java.io.BufferedInpu
6、tStream;import java.io.DataInputStream;import java.io.DataOutputStream;import java.io.File;import java.io.FileInputStream;import .ServerSocket;import .Socket;import javax.xml.parsers.DocumentBuilder;import javax.xml.parsers.DocumentBuilderFactory;import javax.xml.transform.Transformer;import javax.x
7、ml.transform.TransformerFactory;import javax.xml.transform.dom.DOMSource;import javax.xml.transform.stream.StreamResult;import org.w3c.dom.Comment;import org.w3c.dom.Document;import org.w3c.dom.Element;/ author willson* */public class ServerTest 设置端口号,一遍客户端调用int port = 8821;void start() Socket socke
8、t = null;try /创建绑定到特定端口的服务器套接字。ServerSocket serverSocket = new ServerSocket(port); while (true) /选择进行传输的文件String filePath = writeXMLFile();File fi = new File(filePath);* 1.服务器端*System.out.println(File Name : + fi.getName() + ;tFile Size() : + (int) fi.length() + bytes);System.out.println(等待客户端连接,连接端
9、口 : + port);侦听并接受到此套接字的连接。此方法在连接传入之前一直阻塞socket = serverSocket.accept();System.out.println(建立 socket 链接);/socket.getInputStream()返回此套接字的输入流DataInputStream dis = new DataInputStream(new BufferedInputStream(socket.getInputStream(); dis.readByte(); DataInputStream fis = new DataInputStream(new BufferedI
10、nputStream(new FileInputStream(filePath);DataOutputStream ps = new DataOutputStream(socket.getOutputStream();/将文件名及长度传给客户端。这里要真正适用所有平台,例如中文名 的处理,还需要加工,具体可以参见 Think In Java/ 4th里有现成的代码。ps.writeUTF(fi.getName();ps.flush();ps.writeLong(long) fi.length();ps.flush();int bufferSize = 8192;byte buf = new b
11、ytebufferSize;while (true) int read = 0;if (fis != null) read = fis.read(buf);if (read = -1) break;ps.write(buf, 0, read);ps.flush();注意关闭socket链接哦,不然客户端会等待server的数据过来,/直到socket超时,导致数据不完整。fis.close();socket.close();System.out.println(文件传输完成 n); catch (Exception e) e.printStackTrace();/DOM生成XML文件priva
12、te String writeXMLFile()/获取dom解析的工厂DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();DocumentBuilder builder;/创建xml文件生成路径String path=E:why.xml; try builder = factory.newDocumentBuilder();Document doc = builder.newDocument();作为XML声明的一部分指定此文档版本号的属性doc.setXmlVersion(1.0);创建给定指定字符串的C
13、omment节点。/Comment此接口继承自 CharacterData表示注释的内容,即起始 之间的所有字符。注意,这是在 XML (实际上是 HTML )中的注释的定义, 尽管有些HTML工具可以实现完整SGML注释结构。Comment comment = doc.createComment(创建 xml 文件);doc.appendChild(comment);创建指定类型的元素Element root = doc.createElement(职员);Element name = doc.createElement(姓名力name.appendChild(doc.createTextN
14、ode(王海燕);Element sex = doc.createElement(性另1J);sex.setAttribute(name,女)root.appendChild(name);root.appendChild(sex);doc.appendChild(root);/TransformerFactory 实例可用于创建 Transformer 和 Templates 对象TransformerFactory factory1 = TransformerFactory.newInstance();/ factory1.newTransformer()创建执彳亍从Source 至U Re
15、sult 的复制的新TransformerTransformer tformer = factory1.newTransformer();将 XML Source 转换为 Result。当实例化 Transformer和 对 Transformer实例进行任何修改时,指定的转换行为由TransformerFactory的实际设置决定。空 Source 表示为由 DocumentBuilder.newDocument() 构造的空文档。空Source的转换结果取决于转换行为;结果不总为空Resulttformer.transform(new DOMSource(doc), new StreamR
16、esult(path); catch (Exception e) / TODO Auto-generated catch blocke.printStackTrace(); return path;public static void main(String arg口) new ServerTest().start();3.Socket客户端import java.io.BufferedOutputStream;import java.io.DataInputStream;import java.io.DataOutputStream;import java.io.File;import ja
17、va.io.FileOutputStream;import javax.xml.parsers.DocumentBuilder;import javax.xml.parsers.DocumentBuilderFactory;import org.w3c.dom.Document;import org.w3c.dom.Element;import org.w3c.dom.Node;import org.w3c.dom.NodeList;/ author willson* */public class ClientTest private ClientSocket cs = null;privat
18、e String ip = localhost;/设置成服务器 IPprivate int port = 8821;private String sendMessage = Windwos;public ClientTest() try if (createConnection() sendMessage();getMessage(F:); catch (Exception ex) ex.printStackTrace();private boolean createConnection() * 3.客户端*cs = new ClientSocket(ip, port);try cs.Crea
19、teConnection();System.out.print(连接服务器成功! + n);return true; catch (Exception e) System.out.print(连接服务器失败! + n);return false;private void sendMessage() if (cs = null)return;try cs.sendMessage(sendMessage); catch (Exception e) System.out.print(发送消息失败! + n);private void getMessage(String savePath) if (c
20、s = null)return;DataInputStream inputStream = null;try inputStream = cs.getMessageStream(); catch (Exception e) System.out.print(接收消息缓存错误n);return;try /本地保存路径,文件名会自动从服务器端继承而来。int bufferSize = 8192;byte口 buf = new bytebufferSize;int passedlen = 0;long len = 0;savePath += inputStream.readUTF();DataOut
21、putStream fileOut = new DataOutputStream(newBufferedOutputStream(new BufferedOutputStream(new FileOutputStream(savePath);len = inputStream.readLong();System.out.println(File Size() : + len + bytes);System.out.println(开始接收文件! + n);while (true) int read = 0;if (inputstream != null) read = inputStream.
22、read(buf);passedlen += read;if (read = -1) break;/下面进度条本为图形界面的prograssBar做的,这里如果是打文件,可能会重复打印出一些相同的百分比System.out.println(文件接收了 + (passedlen * 100 / len) + %n);fileOut.write(buf, 0, read);System.out.println(接收完成,文件存为 + savePath + n);fileOut.close(); catch (Exception e) System.out.println(接收消息错误+ n);re
23、turn;jiexi(savePath);public static void main(String arg口)new ClientTest();private static void jiexi(String savePath)获取dom解析的工厂DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();是否删除空格false truefactory.setIgnoringElementContentWhitespace(true);获取解析器DocumentBuilder builder;try builder = factory.newDocumentBuilder();/把xml文档输入到解析器中,并获取xml文档对应的document对象Document document = builder.pa
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 第十章 恒定电流 第51课时 电学实验基础 实验增分课学生用
- 重磅!中国碳监测行业发展前景及市场空间预测报告(智研咨询)
- 广东省惠州市惠城区达标名校2024届十校联考最后英语试题含答案
- 广东省广州市黄埔区重点名校2024年初中英语毕业考试模拟冲刺卷含答案
- 从计算气温到制作气温计-实践性教案设计
- 甘肃省省定西市2023-2024学年中考押题英语预测卷含答案
- 采购管理与精益化教学教案
- 服务物业合同范本
- 工会主席发言稿
- 福建省南平市延平区达标名校2023-2024学年中考适应性考试英语试题含答案
- 2024年05月江西省林业局局属事业单位公开招聘工作人员20人笔试历年高频考点(难、易错点)附带答案详解
- (广东省专用)2024届高考英语冲刺必考题型预测真题模拟-完形填空(10篇)附答案
- 2024-2029年中国5G专网建设及应用行业市场现状分析及竞争格局与投资发展研究报告
- JTG-D40-2011公路水泥混凝土路面设计规范
- 2024年湖北荆门市法院系统招聘雇员制书记员37人历年高频考题难、易错点模拟试题(共500题)附带答案详解
- 2024-2030年中国烟花爆竹行业消费格局及盈利趋势预测研究报告
- 2024年江苏南京市高三二模语文试题答案详解讲评课件
- 2024年广西桂林市双拥工作领导小组办公室考试招聘29人公开引进高层次人才和急需紧缺人才笔试参考题库(共500题)答案详解版
- 2024四川遂宁天一投资集团限公司面向社会公开招聘10人公开引进高层次人才和急需紧缺人才笔试参考题库(共500题)答案详解版
- 2024下半年四川南充事业单位招聘工作人员956人公开引进高层次人才和急需紧缺人才笔试参考题库(共500题)答案详解版
- 中国农业文化遗产与生态智慧智慧树知到期末考试答案章节答案2024年浙江农林大学
评论
0/150
提交评论